OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/ecos-2.0/packages/hal/arm/snds
    from Rev 27 to Rev 174
    Reverse comparison

Rev 27 → Rev 174

/v2_0/cdl/hal_arm_snds.cdl
0,0 → 1,389
#==========================================================================
#
# hal_arm_snds.cdl
#
#
#
#==========================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## eCos is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation; either version 2 or (at your option) any later version.
##
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
## WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
## for more details.
##
## You should have received a copy of the GNU General Public License along
## with eCos; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
##
## As a special exception, if other files instantiate templates or use macros
## or inline functions from this file, or you compile this file and link it
## with other works to produce a work based on this file, this file does not
## by itself cause the resulting work to be covered by the GNU General Public
## License. However the source code for this file must still be made available
## in accordance with section (3) of the GNU General Public License.
##
## This exception does not invalidate any other reasons why a work based on
## this file might be covered by the GNU General Public License.
##
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
#==========================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): gthomas
# Contributors: gthomas, jskov
# Grant Edwards <grante@visi.com>
# Date: 2001-07-31
# Purpose:
# Description:
#
#####DESCRIPTIONEND####
#
#========================================================================*/
 
 
cdl_package CYGPKG_HAL_ARM_SNDS {
display "Samsung SNDS Evaluation Board"
parent CYGPKG_HAL_ARM
define_header hal_arm_snds.h
include_dir cyg/hal
hardware
description "
The SNDS HAL package provides the support needed to run
eCos on a Samsung SNDS Eval board"
 
compile hal_diag.c snds100_misc.c
 
implements CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
implements CYGINT_HAL_DEBUG_GDB_STUBS
implements CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
implements CYGINT_HAL_ARM_ARCH_ARM7
implements CYGINT_HAL_ARM_THUMB_ARCH
# FIXME: Add endian option
 
define_proc {
puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H <pkgconf/hal_arm.h>"
puts $::cdl_system_header "#define CYGBLD_HAL_PLATFORM_H <pkgconf/hal_arm_snds.h>"
puts $::cdl_header ""
puts $::cdl_header "#define HAL_PLATFORM_CPU \"ARM 7TDMI\""
puts $::cdl_header "#define HAL_PLATFORM_BOARD \"Samsung SNDS\""
puts $::cdl_header "#define HAL_PLATFORM_EXTRA \"\""
puts $::cdl_header ""
}
 
cdl_component CYG_HAL_STARTUP {
display "Startup type"
flavor data
legal_values {"RAM" "ROM"}
default_value {"RAM"}
no_define
define -file system.h CYG_HAL_STARTUP
description "
When targetting the SNDS board it is possible to build
the system for either RAM bootstrap or ROM bootstrap.
RAM bootstrap generally requires that the board
is equipped with ROMs containing a suitable ROM monitor or
equivalent software that allows GDB to download the eCos
application on to the board. The ROM bootstrap typically
requires that the eCos application be blown into EPROMs or
equivalent technology."
}
cdl_component CYG_HAL_CPUTYPE {
display "cpu type"
flavor data
legal_values {"KS32C5000A" "S3C4510A"}
default_value {"S3C4510A"}
no_define
define -file system.h CYG_HAL_CPUTYPE
description "Which version of processor is on board."
}
cdl_component CYGNUM_HAL_CPUCLOCK {
display "cpu clock"
flavor data
legal_values 10000000 to 100000000
default_value 50000000
no_define
define -file system.h CYGNUM_HAL_CPUCLOCK
description "Frequency of cpu clock in Hz."
}
 
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS {
display "Number of diag/debug communication channels on the board"
flavor data
calculated 2
}
 
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT {
display "Default console channel."
flavor data
legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
calculated 0
}
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL {
display "Debug serial port"
flavor data
legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
default_value 0
description "The SNDS board has two diag/debug
serial ports. This option chooses which port will
be used to connect to a host running GDB."
}
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL {
display "Diagnostic serial port"
flavor data
legal_values 0 to CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS-1
default_value CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT
description "
The SNDS board has two diag/debug serial ports. This option
chooses which port will be used for diagnostic output."
}
 
cdl_option CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD {
display "Console/GDB serial port baud rate"
flavor data
legal_values 9600 19200 38400 57600 115200
default_value 38400
description "
This option controls the default baud rate used for the
Console/GDB connection."
}
 
# Real-time clock/counter specifics
cdl_component CYGNUM_HAL_RTC_CONSTANTS {
display "Real-time clock constants"
flavor none
cdl_option CYGNUM_HAL_RTC_NUMERATOR {
display "Real-time clock numerator"
flavor data
calculated 1000000000
}
cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
display "Real-time clock denominator"
flavor data
calculated 100
}
cdl_option CYGNUM_HAL_RTC_PERIOD {
display "Real-time clock period"
flavor data
calculated (CYGNUM_HAL_CPUCLOCK/CYGNUM_HAL_RTC_DENOMINATOR)
}
}
 
cdl_component CYGBLD_GLOBAL_OPTIONS {
display "Global build options"
flavor none
parent CYGPKG_NONE
description "
Global build options including control over
compiler flags, linker flags and choice of toolchain."
 
cdl_option CYGBLD_GLOBAL_COMMAND_PREFIX {
display "Global command prefix"
flavor data
no_define
default_value { "arm-elf" }
description "
This option specifies the command prefix used when
invoking the build tools."
}
 
cdl_option CYGBLD_GLOBAL_CFLAGS {
display "Global compiler flags"
flavor data
no_define
if {1} {
default_value { (CYGHWR_THUMB && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
CYGHWR_THUMB ? "-mthumb-interwork -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
(CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
"-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
} else {
default_value { (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
(CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" :
"-mcpu=arm7tdmi -Wall -Wpointer-arith -Wstrict-prototypes -Winline -Wundef -Woverloaded-virtual -g -O2 -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -fvtable-gc -finit-priority" }
}
description "
This option controls the global compiler flags which are used to
compile all packages by default. Individual packages may define
options which override these global flags."
}
 
cdl_option CYGBLD_GLOBAL_LDFLAGS {
display "Global linker flags"
flavor data
no_define
if {1} {
default_value { (CYGHWR_THUMB && CYGHWR_HAL_ARM_BIGENDIAN) ? "-mthumb-interwork -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" :
CYGHWR_THUMB ? "-mthumb-interwork -g -nostdlib -Wl,--gc-sections -Wl,-static" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -g -nostdlib -Wl,--gc-sections -Wl,-static" :
(CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" :
"-mcpu=arm7tdmi -g -nostdlib -Wl,--gc-sections -Wl,-static" }
} else {
default_value { (CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" :
(CYGHWR_HAL_ARM_CPU_FAMILY == "ARM9") && ! CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm9 -g -nostdlib -Wl,--gc-sections -Wl,-static" :
(CYGHWR_HAL_ARM_CPU_FAMILY != "ARM9") && CYGHWR_HAL_ARM_BIGENDIAN ? "-mcpu=arm7tdmi -mbig-endian -g -nostdlib -Wl,--gc-sections -Wl,-static" :
"-mcpu=arm7tdmi -g -nostdlib -Wl,--gc-sections -Wl,-static" }
}
description "
This option controls the global linker flags. Individual
packages may define options which override these global flags."
}
cdl_option CYGBLD_BUILD_GDB_STUBS {
display "Build GDB stub ROM image"
default_value 0
requires { CYG_HAL_STARTUP == "ROM" }
requires CYGSEM_HAL_ROM_MONITOR
requires CYGBLD_BUILD_COMMON_GDB_STUBS
requires CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
requires CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
requires CYGDBG_HAL_DEBUG_GDB_THREAD_SUPPORT
requires ! CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT
requires ! CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
no_define
description "
This option enables the building of the GDB stubs for the
board. The common HAL controls takes care of most of the
build process, but the final conversion from ELF image to
binary data is handled by the platform CDL, allowing
relocation of the data if necessary."
 
make -priority 320 {
<PREFIX>/bin/gdb_module.bin : <PREFIX>/bin/gdb_module.img
$(OBJCOPY) -O binary $< $@
}
}
}
 
cdl_component CYGHWR_MEMORY_LAYOUT {
display "Memory layout"
flavor data
no_define
calculated { CYG_HAL_STARTUP == "RAM" ? "arm_snds_ram" : \
"arm_snds_rom" }
cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
display "Memory layout linker script fragment"
flavor data
no_define
define -file system.h CYGHWR_MEMORY_LAYOUT_LDI
calculated { CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_snds_ram.ldi>" : \
"<pkgconf/mlt_arm_snds_rom.ldi>"}
}
 
cdl_option CYGHWR_MEMORY_LAYOUT_H {
display "Memory layout header file"
flavor data
no_define
define -file system.h CYGHWR_MEMORY_LAYOUT_H
calculated { CYG_HAL_STARTUP == "RAM" ? "<pkgconf/mlt_arm_snds_ram.h>" : \
"<pkgconf/mlt_arm_snds_rom.h>"}
}
}
 
 
cdl_option CYGSEM_HAL_ROM_MONITOR {
display "Behave as a ROM monitor"
flavor bool
default_value 0
parent CYGPKG_HAL_ROM_MONITOR
requires { CYG_HAL_STARTUP == "ROM" }
description "
Enable this option if this program is to be used as a ROM monitor,
i.e. applications will be loaded into RAM on the board, and this
ROM monitor may process exceptions or interrupts generated from the
application. This enables features such as utilizing a separate
interrupt stack when exceptions are generated."
}
 
cdl_component CYGPKG_CYGMON_HAL_OPTIONS {
display "CygMon HAL options"
flavor none
no_define
parent CYGPKG_CYGMON
active_if CYGPKG_CYGMON
requires CYGPKG_IO_SERIAL_ARM_SNDS
requires {(CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser0\"") || \
(CYGPKG_IO_SERIAL_ARM_SNDS_SERIAL0 && \
(CYGNUM_IO_SERIAL_ARM_SNDS_SERIAL0_BUFSIZE == 512))}
requires {(CYGDAT_CYGMON_CONSOLE_DEV != "\"/dev/ser1\"") || \
(CYGPKG_IO_SERIAL_ARM_SNDS_SERIAL1 && \
(CYGNUM_IO_SERIAL_ARM_SNDS_SERIAL1_BUFSIZE == 512))}
description "
This option also lists the target's requirements for a valid CygMon
configuration."
 
 
cdl_option CYGDAT_CYGMON_CONSOLE_DEV {
display "Serial port for default console"
flavor data
default_value { "\"/dev/ser0\"" }
description "
This option selects the physical device to use as the default
console device for CygMon."
 
}
 
cdl_option CYGBLD_BUILD_CYGMON_BIN {
display "Build CygMon ROM binary image"
active_if CYGBLD_BUILD_CYGMON
default_value 1
no_define
description "This option enables the conversion of the CygMon ELF
image to a binary image suitable for ROM programming."
make -priority 325 {
<PREFIX>/bin/cygmon.bin : <PREFIX>/bin/cygmon.elf
$(OBJCOPY) --strip-debug --change-addresses=0xFC060000 $< $(@:.bin=.img)
$(OBJCOPY) -O srec $< $(@:.bin=.srec)
$(OBJCOPY) -O binary $< $@
}
}
}
 
cdl_component CYGPKG_REDBOOT_HAL_OPTIONS {
display "Redboot HAL options"
flavor none
no_define
parent CYGPKG_REDBOOT
active_if CYGPKG_REDBOOT
description "
This option lists the target's requirements for a valid Redboot
configuration."
 
cdl_option CYGBLD_BUILD_REDBOOT_BIN {
display "Build Redboot ROM binary image"
active_if CYGBLD_BUILD_REDBOOT
default_value 1
no_define
description "This option enables the conversion of the Redboot ELF
image to a binary image suitable for ROM programming."
make -priority 325 {
<PREFIX>/bin/redboot.bin : <PREFIX>/bin/redboot.elf
$(OBJCOPY) --strip-debug $< $(@:.bin=.img)
$(OBJCOPY) -O srec $< $(@:.bin=.srec)
$(OBJCOPY) -O binary $< $@
}
}
}
 
}
/v2_0/include/plf_stub.h
0,0 → 1,77
//==========================================================================
//
// plf_stub.h
//
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose:
// Description:
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
#ifndef CYGONCE_HAL_PLF_STUB_H
#define CYGONCE_HAL_PLF_STUB_H
 
#include <pkgconf/hal.h>
 
#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
#include <cyg/infra/cyg_type.h> // CYG_UNUSED_PARAM
#include <cyg/hal/arm_stub.h> // architecture stub support
// Define serial stuff.
externC void cyg_hal_plf_comms_init(void);
#define HAL_STUB_PLATFORM_INIT_SERIAL() cyg_hal_plf_comms_init()
#define HAL_STUB_PLATFORM_SET_BAUD_RATE(baud) CYG_UNUSED_PARAM(int, (baud))
#define HAL_STUB_PLATFORM_INTERRUPTIBLE 0
#define HAL_STUB_PLATFORM_INIT_BREAK_IRQ() CYG_EMPTY_STATEMENT
// Stub initializer.
#define HAL_STUB_PLATFORM_INIT() CYG_EMPTY_STATEMENT
#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
 
// Reset.
externC void hal_reset(void);
#define HAL_STUB_PLATFORM_RESET() hal_reset()
#define HAL_STUB_PLATFORM_RESET_ENTRY 0
 
#endif // CYGONCE_HAL_PLF_STUB_H
/v2_0/include/pkgconf/mlt_arm_snds_rom.h
0,0 → 1,20
// eCos memory layout - Wed Apr 11 13:49:55 2001
 
// This is a generated file - do not edit
 
#ifndef __ASSEMBLER__
#include <cyg/infra/cyg_type.h>
#include <stddef.h>
 
#endif
#define CYGMEM_REGION_ram (0)
#define CYGMEM_REGION_ram_SIZE (0x1000000)
#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
#define CYGMEM_REGION_rom (0x1800000)
#define CYGMEM_REGION_rom_SIZE (0x80000)
#define CYGMEM_REGION_rom_ATTR (CYGMEM_REGION_ATTR_R)
#ifndef __ASSEMBLER__
extern char CYG_LABEL_NAME (__heap1) [];
#endif
#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
#define CYGMEM_SECTION_heap1_SIZE (0x1000000 - (size_t) CYG_LABEL_NAME (__heap1))
/v2_0/include/pkgconf/mlt_arm_snds_rom.ldi
0,0 → 1,28
// eCos memory layout - Wed Apr 11 13:49:55 2001
 
// This is a generated file - do not edit
 
#include <cyg/infra/cyg_type.inc>
 
MEMORY
{
ram : ORIGIN = 0, LENGTH = 0x1000000
rom : ORIGIN = 0x1800000, LENGTH = 0x80000
}
 
SECTIONS
{
SECTIONS_BEGIN
SECTION_rom_vectors (rom, 0x1800000, LMA_EQ_VMA)
SECTION_text (rom, ALIGN (0x1), LMA_EQ_VMA)
SECTION_fini (rom, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata (rom, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata1 (rom, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fixup (rom, ALIGN (0x4), LMA_EQ_VMA)
SECTION_gcc_except_table (rom, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fixed_vectors (ram, 0x20, LMA_EQ_VMA)
SECTION_data (ram, 0x20000, FOLLOWING (.gcc_except_table))
SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
SECTIONS_END
}
/v2_0/include/pkgconf/mlt_arm_snds_ram.h
0,0 → 1,15
// eCos memory layout - Tue Feb 29 14:11:30 2000
 
// This is a generated file - do not edit
 
#include <cyg/infra/cyg_type.h>
#include <stddef.h>
 
#define CYGMEM_REGION_ram (0)
#define CYGMEM_REGION_ram_SIZE (0x01000000)
#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
#ifndef __ASSEMBLER__
extern char CYG_LABEL_NAME (__heap1) [];
#endif
#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
#define CYGMEM_SECTION_heap1_SIZE (0x01000000 - (size_t) CYG_LABEL_NAME (__heap1))
/v2_0/include/pkgconf/mlt_arm_snds_ram.ldi
0,0 → 1,27
// eCos memory layout - Tue Feb 29 14:11:30 2000
 
// This is a generated file - do not edit
 
#include <cyg/infra/cyg_type.inc>
 
MEMORY
{
ram : ORIGIN = 0x000000, LENGTH = 0x01000000
}
 
SECTIONS
{
SECTIONS_BEGIN
SECTION_fixed_vectors (ram, 0x200, LMA_EQ_VMA)
SECTION_rom_vectors (ram, 0x00020000, LMA_EQ_VMA)
SECTION_text (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fini (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_rodata1 (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_fixup (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_gcc_except_table (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_data (ram, ALIGN (0x4), LMA_EQ_VMA)
SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA)
CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
SECTIONS_END
}
/v2_0/include/pkgconf/mlt_arm_snds_rom.mlt
0,0 → 1,15
version 0
region ram 0 1000000 0 !
region rom 1800000 80000 1 !
section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
section data 0 1 1 1 1 1 0 0 1000000 bss !
section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
section heap1 0 8 0 0 0 0 0 0 !
section reserved_bootmon 20000 1 0 0 1 1 1 1 1800000 1800000 rom_vectors rom_vectors !
section rom_vectors 0 8 0 1 0 1 0 1 text text !
section text 0 1 0 1 0 1 0 1 fini fini !
section fini 0 4 0 1 0 1 0 1 rodata rodata !
section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
section rodata1 0 4 0 1 0 1 0 1 fixup fixup !
section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
section gcc_except_table 0 4 0 1 0 0 0 1 data !
/v2_0/include/pkgconf/mlt_arm_snds_ram.mlt
0,0 → 1,13
version 0
region ram 0 1000000 0 !
section fixed_vectors 0 1 0 1 1 0 1 0 20 20 !
section rom_vectors 0 1 0 1 1 1 1 1 20000 20000 text text !
section text 0 4 0 1 0 1 0 1 fini fini !
section fini 0 4 0 1 0 1 0 1 rodata rodata !
section rodata 0 4 0 1 0 1 0 1 rodata1 rodata1 !
section rodata1 0 4 0 1 0 1 0 1 fixup fixup !
section fixup 0 4 0 1 0 1 0 1 gcc_except_table gcc_except_table !
section gcc_except_table 0 4 0 1 0 1 0 1 data data !
section data 0 4 0 1 0 1 0 1 bss bss !
section bss 0 4 0 1 0 1 0 1 heap1 heap1 !
section heap1 0 8 0 0 0 0 0 0 !
/v2_0/include/hal_platform_ints.h
0,0 → 1,108
#ifndef CYGONCE_HAL_PLATFORM_INTS_H
#define CYGONCE_HAL_PLATFORM_INTS_H
//==========================================================================
//
// hal_platform_ints.h
//
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose:
// Description:
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
#define CYGNUM_HAL_INTERRUPT_EXT0 0
#define CYGNUM_HAL_INTERRUPT_EXT1 1
#define CYGNUM_HAL_INTERRUPT_EXT2 2
#define CYGNUM_HAL_INTERRUPT_EXT3 3
#define CYGNUM_HAL_INTERRUPT_UART0_TX 4
#define CYGNUM_HAL_INTERRUPT_UART0_RX 5
#if !defined(CYG_HAL_CPUTYPE)
#error CYG_HAL_CPUTYPE not defined
#endif
#if defined(CYG_HAL_CPUTYPE_KS32C5000A)
#define CYGNUM_HAL_INTERRUPT_UART0_ERR 6
#define CYGNUM_HAL_INTERRUPT_UART1_TX 7
#define CYGNUM_HAL_INTERRUPT_UART1_RX 8
#define CYGNUM_HAL_INTERRUPT_UART1_ERR 9
#define CYGNUM_HAL_INTERRUPT_DMA0 10
#define CYGNUM_HAL_INTERRUPT_DMA1 11
#define CYGNUM_HAL_INTERRUPT_TIMER0 12
#define CYGNUM_HAL_INTERRUPT_TIMER1 13
#define CYGNUM_HAL_INTERRUPT_HDLCA 14
#define CYGNUM_HAL_INTERRUPT_HDLCB 15
#else
#define CYGNUM_HAL_INTERRUPT_UART1_TX 6
#define CYGNUM_HAL_INTERRUPT_UART1_RX 7
#define CYGNUM_HAL_INTERRUPT_DMA0 8
#define CYGNUM_HAL_INTERRUPT_DMA1 9
#define CYGNUM_HAL_INTERRUPT_TIMER0 10
#define CYGNUM_HAL_INTERRUPT_TIMER1 11
#define CYGNUM_HAL_INTERRUPT_HDLCA_TX 12
#define CYGNUM_HAL_INTERRUPT_HDLCA_RX 13
#define CYGNUM_HAL_INTERRUPT_HDLCB_TX 14
#define CYGNUM_HAL_INTERRUPT_HDLCB_RX 15
#endif
#define CYGNUM_HAL_INTERRUPT_ETH_BDMA_TX 16
#define CYGNUM_HAL_INTERRUPT_ETH_BDMA_RX 17
#define CYGNUM_HAL_INTERRUPT_ETH_MAC_TX 18
#define CYGNUM_HAL_INTERRUPT_ETH_MAC_RX 19
#define CYGNUM_HAL_INTERRUPT_I2C 20
 
#define CYGNUM_HAL_ISR_MIN 0
#define CYGNUM_HAL_ISR_MAX 20
#define CYGNUM_HAL_ISR_COUNT 21
 
// The vector used by the Real time clock
 
#define CYGNUM_HAL_INTERRUPT_RTC CYGNUM_HAL_INTERRUPT_TIMER0
 
//----------------------------------------------------------------------------
// Reset.
#define HAL_PLATFORM_RESET()
 
#define HAL_PLATFORM_RESET_ENTRY 0x01010000
 
#endif // CYGONCE_HAL_PLATFORM_INTS_H
/v2_0/include/hal_cache.h
0,0 → 1,291
#ifndef CYGONCE_HAL_CACHE_H
#define CYGONCE_HAL_CACHE_H
//=============================================================================
//
// hal_cache.h
//
// HAL cache control API
//
//=============================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): nickg, gthomas
// Contributors: nickg, gthomas
// Date: 1998-09-28
// Purpose: Cache control API
// Description: The macros defined here provide the HAL APIs for handling
// cache control operations.
// Usage:
// #include <cyg/hal/hal_cache.h>
// ...
//
//
//####DESCRIPTIONEND####
//
//=============================================================================
 
#include <cyg/infra/cyg_type.h>
#include <cyg/hal/hal_io.h>
#include <cyg/hal/plf_io.h>
 
//-----------------------------------------------------------------------------
// Cache dimensions - one unified cache
 
#define HAL_CACHE_UNIFIED
 
#define HAL_UCACHE_SIZE 0x2000 // Size of cache in bytes
#define HAL_UCACHE_LINE_SIZE 16 // Size of a cache line
#define HAL_UCACHE_WAYS 2 // Associativity of the cache
 
#define HAL_UCACHE_SETS (HAL_UCACHE_SIZE/(HAL_UCACHE_LINE_SIZE*HAL_UCACHE_WAYS))
 
//-----------------------------------------------------------------------------
// Global control of cache
 
// Enable the cache
#define HAL_UCACHE_ENABLE() \
CYG_MACRO_START \
cyg_uint32 syscfg; \
HAL_READ_UINT32(KS32C_SYSCFG, syscfg); \
syscfg |= KS32C_SYSCFG_CE; \
HAL_WRITE_UINT32(KS32C_SYSCFG, syscfg); \
CYG_MACRO_END
 
// Disable the cache
#define HAL_UCACHE_DISABLE() \
CYG_MACRO_START \
cyg_uint32 syscfg; \
HAL_READ_UINT32(KS32C_SYSCFG, syscfg); \
syscfg &= ~KS32C_SYSCFG_CE; \
HAL_WRITE_UINT32(KS32C_SYSCFG, syscfg); \
CYG_MACRO_END
 
// Invalidate the entire cache
#define HAL_UCACHE_INVALIDATE_ALL() \
CYG_MACRO_START \
register cyg_uint32* tag = (cyg_uint32*)KS32C_CACHE_TAG_ADDR; \
register int i; \
for (i = 0; i < HAL_UCACHE_SETS/4; i++) { \
*tag++ = 0; \
*tag++ = 0; \
*tag++ = 0; \
*tag++ = 0; \
} \
CYG_MACRO_END
 
// Synchronize the contents of the cache with memory.
// No action necessary. Cache is write-through.
#define HAL_UCACHE_SYNC()
 
// Query the state of the cache
#define HAL_UCACHE_IS_ENABLED(_state_) \
CYG_MACRO_START \
cyg_uint32 syscfg; \
HAL_READ_UINT32(KS32C_SYSCFG, syscfg); \
(_state_) = (syscfg & KS32C_SYSCFG_CE) ? 1 : 0; \
CYG_MACRO_END
 
// Purge contents of cache
#define HAL_UCACHE_PURGE_ALL() HAL_UCACHE_INVALIDATE_ALL()
 
// Set the cache refill burst size
//#define HAL_UCACHE_BURST_SIZE(_size_)
 
// Set the cache write mode
//#define HAL_UCACHE_WRITE_MODE( _mode_ )
 
//#define HAL_UCACHE_WRITETHRU_MODE 0
//#define HAL_UCACHE_WRITEBACK_MODE 1
 
// Load the contents of the given address range into the cache
// and then lock the cache so that it stays there.
//#define HAL_UCACHE_LOCK(_base_, _size_)
 
// Undo a previous lock operation
//#define HAL_UCACHE_UNLOCK(_base_, _size_)
 
// Unlock entire cache
//#define HAL_UCACHE_UNLOCK_ALL()
 
//-----------------------------------------------------------------------------
// Cache line control
 
// Allocate cache lines for the given address range without reading its
// contents from memory.
//#define HAL_UCACHE_ALLOCATE( _base_ , _size_ )
 
// Write dirty cache lines to memory and invalidate the cache entries
// for the given address range.
//#define HAL_UCACHE_FLUSH( _base_ , _size_ )
 
// Invalidate cache lines in the given range without writing to memory.
//#define HAL_UCACHE_INVALIDATE( _base_ , _size_ )
 
// Write dirty cache lines to memory for the given address range.
//#define HAL_UCACHE_STORE( _base_ , _size_ )
 
// Preread the given range into the cache with the intention of reading
// from it later.
//#define HAL_UCACHE_READ_HINT( _base_ , _size_ )
 
// Preread the given range into the cache with the intention of writing
// to it later.
//#define HAL_UCACHE_WRITE_HINT( _base_ , _size_ )
 
// Allocate and zero the cache lines associated with the given range.
//#define HAL_UCACHE_ZERO( _base_ , _size_ )
 
//-----------------------------------------------------------------------------
 
//-----------------------------------------------------------------------------
// Data and instruction cache macros map onto the both-cache macros
 
//-----------------------------------------------------------------------------
// Global control of data cache
 
#define HAL_DCACHE_SIZE HAL_UCACHE_SIZE
#define HAL_DCACHE_LINE_SIZE HAL_UCACHE_LINE_SIZE
#define HAL_DCACHE_WAYS HAL_UCACHE_WAYS
#define HAL_DCACHE_SETS HAL_UCACHE_SETS
 
// Enable the data cache
#define HAL_DCACHE_ENABLE() HAL_UCACHE_ENABLE()
 
// Disable the data cache
#define HAL_DCACHE_DISABLE() HAL_UCACHE_DISABLE()
 
// Invalidate the entire cache
#define HAL_DCACHE_INVALIDATE_ALL() HAL_UCACHE_INVALIDATE_ALL()
 
// Synchronize the contents of the cache with memory.
#define HAL_DCACHE_SYNC() HAL_UCACHE_SYNC()
 
// Query the state of the data cache
#define HAL_DCACHE_IS_ENABLED(_state_) HAL_UCACHE_IS_ENABLED(_state_)
 
// Set the data cache refill burst size
//#define HAL_DCACHE_BURST_SIZE(_size_)
 
// Set the data cache write mode
//#define HAL_DCACHE_WRITE_MODE( _mode_ )
 
//#define HAL_DCACHE_WRITETHRU_MODE 0
//#define HAL_DCACHE_WRITEBACK_MODE 1
 
// Load the contents of the given address range into the data cache
// and then lock the cache so that it stays there.
//#define HAL_DCACHE_LOCK(_base_, _size_)
 
// Undo a previous lock operation
//#define HAL_DCACHE_UNLOCK(_base_, _size_)
 
// Unlock entire cache
//#define HAL_DCACHE_UNLOCK_ALL()
 
//-----------------------------------------------------------------------------
// Data cache line control
 
// Allocate cache lines for the given address range without reading its
// contents from memory.
//#define HAL_DCACHE_ALLOCATE( _base_ , _size_ )
 
// Write dirty cache lines to memory and invalidate the cache entries
// for the given address range.
//#define HAL_DCACHE_FLUSH( _base_ , _size_ )
 
// Invalidate cache lines in the given range without writing to memory.
//#define HAL_DCACHE_INVALIDATE( _base_ , _size_ )
 
// Write dirty cache lines to memory for the given address range.
//#define HAL_DCACHE_STORE( _base_ , _size_ )
 
// Preread the given range into the cache with the intention of reading
// from it later.
//#define HAL_DCACHE_READ_HINT( _base_ , _size_ )
 
// Preread the given range into the cache with the intention of writing
// to it later.
//#define HAL_DCACHE_WRITE_HINT( _base_ , _size_ )
 
// Allocate and zero the cache lines associated with the given range.
//#define HAL_DCACHE_ZERO( _base_ , _size_ )
 
//-----------------------------------------------------------------------------
// Global control of Instruction cache
 
#define HAL_ICACHE_SIZE HAL_UCACHE_SIZE
#define HAL_ICACHE_LINE_SIZE HAL_UCACHE_LINE_SIZE
#define HAL_ICACHE_WAYS HAL_UCACHE_WAYS
#define HAL_ICACHE_SETS HAL_UCACHE_SETS
 
// Enable the instruction cache
#define HAL_ICACHE_ENABLE() HAL_UCACHE_ENABLE()
 
// Disable the instruction cache
#define HAL_ICACHE_DISABLE() HAL_UCACHE_DISABLE()
 
// Invalidate the entire cache
#define HAL_ICACHE_INVALIDATE_ALL() HAL_UCACHE_INVALIDATE_ALL()
 
 
// Synchronize the contents of the cache with memory.
#define HAL_ICACHE_SYNC() HAL_UCACHE_SYNC()
 
// Query the state of the instruction cache
#define HAL_ICACHE_IS_ENABLED(_state_) HAL_UCACHE_IS_ENABLED(_state_)
 
// Set the instruction cache refill burst size
//#define HAL_ICACHE_BURST_SIZE(_size_)
 
// Load the contents of the given address range into the instruction cache
// and then lock the cache so that it stays there.
 
//#define HAL_ICACHE_LOCK(_base_, _size_)
 
// Undo a previous lock operation
//#define HAL_ICACHE_UNLOCK(_base_, _size_)
 
// Unlock entire cache
//#define HAL_ICACHE_UNLOCK_ALL()
 
//-----------------------------------------------------------------------------
// Instruction cache line control
 
// Invalidate cache lines in the given range without writing to memory.
//#define HAL_ICACHE_INVALIDATE( _base_ , _size_ )
 
#endif // ifndef CYGONCE_HAL_CACHE_H
// End of hal_cache.h
/v2_0/include/hal_diag.h
0,0 → 1,83
//==========================================================================
//
// hal_diag.h
//
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose:
// Description:
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
#ifndef CYGONCE_HAL_DIAG_H
#define CYGONCE_HAL_DIAG_H
 
#include <pkgconf/hal.h>
#include <cyg/infra/cyg_type.h>
 
#if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
 
#include <cyg/hal/hal_if.h>
 
#define HAL_DIAG_INIT() hal_if_diag_init()
#define HAL_DIAG_WRITE_CHAR(_c_) hal_if_diag_write_char(_c_)
#define HAL_DIAG_READ_CHAR(_c_) hal_if_diag_read_char(&_c_)
 
//// Not the best place for this, but ...
extern void hal_delay_us(cyg_int32 usecs);
#define HAL_DELAY_US(n) hal_delay_us(n);
 
#else // old way of doing diagnostic I/O
 
externC void hal_diag_init(void);
externC void hal_diag_write_char(char c);
externC void hal_diag_read_char(char *c);
 
#define HAL_DIAG_INIT() hal_diag_init()
#define HAL_DIAG_WRITE_CHAR(_c_) hal_diag_write_char(_c_)
#define HAL_DIAG_READ_CHAR(_c_) hal_diag_read_char(&_c_)
 
#endif // defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
#endif /* CYGONCE_HAL_DIAG_H */
/v2_0/include/hal_platform_setup.h
0,0 → 1,328
#ifndef CYGONCE_HAL_PLATFORM_SETUP_H
#define CYGONCE_HAL_PLATFORM_SETUP_H
//==========================================================================
//
// hal_platform_setup.h
//
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose:
// Description:
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
// does normal DRAM setup, which doesn't fail?!?!
 
#include <cyg/hal/plf_io.h>
 
#define CYGHWR_LED_MACRO \
ldr r0,=KS32C_IOPDATA ;\
mov r1, #((255 & (~(\x)))) ;\
str r1, [r0] ;
#if CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE==4096
// Override default to a more sensible value
#undef CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
#define CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE 2048
#endif
 
// Use relative branch since we are going to switch the address space
// around.
#define CYGSEM_HAL_ROM_RESET_USES_JUMP
 
#if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_ROMRAM)
#define PLATFORM_SETUP1 \
ldr r1,=KS32C_IOPMOD ;\
ldr r2,=0xff /* set led display to output */ ;\
str r2,[r1,#0x00] ;\
LED 0xaa ;\
;\
/* Normal DRAM mode */ ;\
ldr r3, =0x03ffff90 /* cache+wb disabled, regs @ 0x03ff0000 */;\
ldr r0, =KS32C_SYSCFG ;\
str r3,[r0] ;\
ldr lr,=10f ;\
1: mov r1,pc ;\
sub r1,r1,#8 ;\
ldr r0,=1b ;\
sub r1,r1,r0 ;\
ldr r0,=30f ;\
add r0,r0,r1 ;\
ldmia r0,{r1-r12} ;\
ldr r0,=KS32C_EXTDBWTH ;\
stmia r0,{r1-r12} ;\
mov pc,lr ;\
10: LED 0x80 ;\
\
/* Check that it worked, otherwise try Sync DRAM setup */ ;\
ldr r1,=0x00000000 ;\
str r1,[r1] ;\
ldr r2,[r1] ;\
cmp r2,r1 ;\
beq 99f ;\
\
/* Sync DRAM mode */ ;\
LED 0x81 ;\
ldr r3, =0x83ffff90 /* sdram c+wb disabled, regs @ 0x03ff0000 */;\
ldr r0, =KS32C_SYSCFG ;\
str r3,[r0] ;\
ldr lr,=99f ;\
1: mov r1,pc ;\
sub r1,r1,#8 ;\
ldr r0,=1b ;\
sub r1,r1,r0 ;\
ldr r0,=40f ;\
add r0,r0,r1 ;\
ldmia r0,{r1-r12} ;\
ldr r0,=KS32C_EXTDBWTH ;\
stmia r0,{r1-r12} ;\
mov pc,lr ;\
;\
/* The below are set with a store-multiple instruction */ ;\
;\
/* Normal DRAM setup */ ;\
/* Flash is 16 bit, everything else 32 bit */ ;\
/* .long KS32C_EXTDBWTH */ ;\
30: .long ( (KS32C_EXTDBWTH_16BIT<<KS32C_EXTDBWTH_DSR0_shift) \
|(KS32C_EXTDBWTH_16BIT<<KS32C_EXTDBWTH_DSR1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR3_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR4_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR5_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD0_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD3_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX0_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX3_shift) ) ;\
/* Flash at 0x01800000-0x01880000, 5 cycles, 7 cycles */ ;\
/* .long KS32C_ROMCON0 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_7C) \
|((0x01800000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x01880000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON1 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON2 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON3 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_3C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON4 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON5 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON0 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_10) \
|(KS32C_DRAMCON_TRP_3C) \
|(KS32C_DRAMCON_TRC_1C) \
|(KS32C_DRAMCON_TCP_1C) \
|(KS32C_DRAMCON_TCS_2C) \
|(KS32C_DRAMCON_EDO) \
|((0x00000000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00400000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON1 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_10) \
|(KS32C_DRAMCON_TRP_1C) \
|(KS32C_DRAMCON_TRC_1C) \
|(KS32C_DRAMCON_TCP_1C) \
|(KS32C_DRAMCON_TCS_2C) \
|(KS32C_DRAMCON_EDO) \
|((0x00400000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00800000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON2 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_10) \
|(KS32C_DRAMCON_TRP_1C) \
|(KS32C_DRAMCON_TRC_1C) \
|(KS32C_DRAMCON_TCP_1C) \
|(KS32C_DRAMCON_TCS_2C) \
|((0x00800000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00c00000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON3 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_10) \
|(KS32C_DRAMCON_TRP_1C) \
|(KS32C_DRAMCON_TRC_1C) \
|(KS32C_DRAMCON_TCP_1C) \
|(KS32C_DRAMCON_TCS_2C) \
|((0x00c00000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x01000000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_REFEXTCON */ ;\
.long (((2048+1-(16*CYGNUM_HAL_CPUCLOCK/1000000)) << KS32C_REFEXTCON_RCV_shift) \
|(KS32C_REFEXTCON_TCSR_1C) \
|(KS32C_REFEXTCON_TCHR_1C) \
|(KS32C_REFEXTCON_REN) \
|(KS32C_REFEXTCON_VSF) \
|(KS32C_REFEXTCON_BASE)) ;\
;\
/* Sync DRAM setup */ ;\
/* Flash is 16 bit, everything else 32 bit */ ;\
/* .long KS32C_EXTDBWTH */ ;\
40: .long ( (KS32C_EXTDBWTH_16BIT<<KS32C_EXTDBWTH_DSR0_shift) \
|(KS32C_EXTDBWTH_16BIT<<KS32C_EXTDBWTH_DSR1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR3_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR4_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSR5_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD0_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSD3_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX0_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX1_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX2_shift) \
|(KS32C_EXTDBWTH_32BIT<<KS32C_EXTDBWTH_DSX3_shift) ) ;\
/* Flash at 0x01800000-0x01880000, 5 cycles, 7 cycles */ ;\
/* .long KS32C_ROMCON0 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_7C) \
|((0x01800000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x01880000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON1 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON2 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON3 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON4 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_ROMCON5 */ ;\
.long ( (KS32C_ROMCON_PMC_ROM) \
|(KS32C_ROMCON_TPA_5C) \
|(KS32C_ROMCON_TACC_5C) \
|((0x00000000 >> 16) << KS32C_ROMCON_BASE_shift) \
|((0x00000000 >> 16) << KS32C_ROMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON0 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_8) \
|(KS32C_DRAMCON_TRP_4C) \
|(KS32C_DRAMCON_TRC_2C) \
|((0x00000000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00400000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON1 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_8) \
|(KS32C_DRAMCON_TRP_2C) \
|(KS32C_DRAMCON_TRC_2C) \
|((0x00400000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00800000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON2 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_8) \
|(KS32C_DRAMCON_TRP_2C) \
|(KS32C_DRAMCON_TRC_2C) \
|((0x00800000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x00c00000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_DRAMCON3 */ ;\
.long ( (KS32C_DRAMCON_RESERVED) \
|(KS32C_DRAMCON_CAN_8) \
|(KS32C_DRAMCON_TRP_2C) \
|(KS32C_DRAMCON_TRC_2C) \
|((0x00c00000 >> 16) << KS32C_DRAMCON_BASE_shift) \
|((0x01000000 >> 16) << KS32C_DRAMCON_NEXT_shift)) ;\
/* .long KS32C_REFEXTCON */ ;\
.long (((2048+1-(8*CYGNUM_HAL_CPUCLOCK/1000000)) << KS32C_REFEXTCON_RCV_shift) \
|(KS32C_REFEXTCON_TRC_4C) \
|(KS32C_REFEXTCON_REN) \
|(KS32C_REFEXTCON_VSF) \
|(KS32C_REFEXTCON_BASE)) ;\
99: LED 0x82 ;\
ldr r3,=0x00000000 ;\
str r3,[r3] ;\
ldr r4,[r3] ;\
cmp r4,r3 ;\
beq 15f ;\
11: LED 0x83 ;\
b 11b ;\
15: LED 0x84
#else
#define PLATFORM_SETUP1
#endif
 
//-----------------------------------------------------------------------------
// end of hal_platform_setup.h
#endif // CYGONCE_HAL_PLATFORM_SETUP_H
/v2_0/include/plf_io.h
0,0 → 1,286
#ifndef CYGONCE_HAL_PLF_IO_H
#define CYGONCE_HAL_PLF_IO_H
//=============================================================================
//
// plf_io.h
//
// Platform specific registers
//
//=============================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): jskov
// Contributors:jskov
// Date: 2001-03-16
// Purpose: ARM/KS32C platform specific registers
// Description:
// Usage: #include <cyg/hal/plf_io.h>
//
//####DESCRIPTIONEND####
//
//=============================================================================
 
// non-caching by accessing addr|0x04000000
 
#define KS32C_REG_BASE 0x07ff0000
 
// -----------------------------------------------------------------------------
// System config (register bases and caching)
#define KS32C_SYSCFG (KS32C_REG_BASE + 0x0000)
 
#define KS32C_SYSCFG_SDM 0x80000000
#define KS32C_SYSCFG_PD_ID_MASK 0x3c000000
#define KS32C_SYSCFG_SRBBP_MASK 0x03ff0000 // address/64k
#define KS32C_SYSCFG_ISBBP_MASK 0x0000ffc0 // a25-a16
#define KS32C_SYSCFG_CM_MASK 0x00000030
#define KS32C_SYSCFG_CM_4R_4C 0x00000000
#define KS32C_SYSCFG_CM_0R_8C 0x00000010
#define KS32C_SYSCFG_CM_8R_0C 0x00000020
#define KS32C_SYSCFG_WE 0x00000004 // only KS32C50100?
#define KS32C_SYSCFG_CE 0x00000002
#define KS32C_SYSCFG_SE 0x00000001
 
#define KS32C_CLKCON (KS32C_REG_BASE + 0x3000)
 
#define KS32C_EXTACON0 (KS32C_REG_BASE + 0x3008)
#define KS32C_EXTACON1 (KS32C_REG_BASE + 0x300c)
 
//-----------------------------------------------------------------------------
// Memory banks data width
#define KS32C_EXTDBWTH (KS32C_REG_BASE + 0x3010)
 
#define KS32C_EXTDBWTH_MASK 3
#define KS32C_EXTDBWTH_8BIT 1
#define KS32C_EXTDBWTH_16BIT 2
#define KS32C_EXTDBWTH_32BIT 3
 
#define KS32C_EXTDBWTH_DSR0_shift 0
#define KS32C_EXTDBWTH_DSR1_shift 2
#define KS32C_EXTDBWTH_DSR2_shift 4
#define KS32C_EXTDBWTH_DSR3_shift 6
#define KS32C_EXTDBWTH_DSR4_shift 8
#define KS32C_EXTDBWTH_DSR5_shift 10
#define KS32C_EXTDBWTH_DSD0_shift 12
#define KS32C_EXTDBWTH_DSD1_shift 14
#define KS32C_EXTDBWTH_DSD2_shift 16
#define KS32C_EXTDBWTH_DSD3_shift 18
#define KS32C_EXTDBWTH_DSX0_shift 20
#define KS32C_EXTDBWTH_DSX1_shift 22
#define KS32C_EXTDBWTH_DSX2_shift 24
#define KS32C_EXTDBWTH_DSX3_shift 26
 
// -----------------------------------------------------------------------------
// Bank locations and timing
#define KS32C_ROMCON0 (KS32C_REG_BASE + 0x3014)
#define KS32C_ROMCON1 (KS32C_REG_BASE + 0x3018)
#define KS32C_ROMCON2 (KS32C_REG_BASE + 0x301c)
#define KS32C_ROMCON3 (KS32C_REG_BASE + 0x3020)
#define KS32C_ROMCON4 (KS32C_REG_BASE + 0x3024)
#define KS32C_ROMCON5 (KS32C_REG_BASE + 0x3028)
 
#define KS32C_ROMCON_PMC_MASK 0x00000003
#define KS32C_ROMCON_PMC_ROM 0x00000000
#define KS32C_ROMCON_PMC_4W_PAGE 0x00000001
#define KS32C_ROMCON_PMC_8W_PAGE 0x00000002
#define KS32C_ROMCON_PMC_16W_PAGE 0x00000003
 
#define KS32C_ROMCON_TPA_MASK 0x0000000c
#define KS32C_ROMCON_TPA_5C 0x00000000
#define KS32C_ROMCON_TPA_2C 0x00000004
#define KS32C_ROMCON_TPA_3C 0x00000008
#define KS32C_ROMCON_TPA_4C 0x0000000c
 
#define KS32C_ROMCON_TACC_MASK 0x00000070
#define KS32C_ROMCON_TACC_DISABLE 0x00000000
#define KS32C_ROMCON_TACC_2C 0x00000010
#define KS32C_ROMCON_TACC_3C 0x00000020
#define KS32C_ROMCON_TACC_4C 0x00000030
#define KS32C_ROMCON_TACC_5C 0x00000040
#define KS32C_ROMCON_TACC_6C 0x00000050
#define KS32C_ROMCON_TACC_7C 0x00000060
 
#define KS32C_ROMCON_BASE_MASK 0x000ff700
#define KS32C_ROMCON_BASE_shift 10
 
#define KS32C_ROMCON_NEXT_MASK 0x7ff00000
#define KS32C_ROMCON_NEXT_shift 20
 
 
 
#define KS32C_DRAMCON0 (KS32C_REG_BASE + 0x302c)
#define KS32C_DRAMCON1 (KS32C_REG_BASE + 0x3030)
#define KS32C_DRAMCON2 (KS32C_REG_BASE + 0x3034)
#define KS32C_DRAMCON3 (KS32C_REG_BASE + 0x3038)
 
#define KS32C_DRAMCON_CAN_8 0x00000000
#define KS32C_DRAMCON_CAN_9 0x40000000
#define KS32C_DRAMCON_CAN_10 0x80000000
#define KS32C_DRAMCON_CAN_11 0xc0000000
#define KS32C_DRAMCON_TRP_1C 0x00000000
#define KS32C_DRAMCON_TRP_2C 0x00000100
#define KS32C_DRAMCON_TRP_3C 0x00000200
#define KS32C_DRAMCON_TRP_4C 0x00000300
#define KS32C_DRAMCON_TRC_1C 0x00000000
#define KS32C_DRAMCON_TRC_2C 0x00000080
#define KS32C_DRAMCON_RESERVED 0x00000010
#define KS32C_DRAMCON_TCP_1C 0x00000000
#define KS32C_DRAMCON_TCP_2C 0x00000008
#define KS32C_DRAMCON_TCS_1C 0x00000000
#define KS32C_DRAMCON_TCS_2C 0x00000002
#define KS32C_DRAMCON_TCS_3C 0x00000004
#define KS32C_DRAMCON_TCS_4C 0x00000006
#define KS32C_DRAMCON_EDO 0x00000001
 
#define KS32C_DRAMCON_BASE_MASK 0x000ff700
#define KS32C_DRAMCON_BASE_shift 10
 
#define KS32C_DRAMCON_NEXT_MASK 0x7ff00000
#define KS32C_DRAMCON_NEXT_shift 20
 
 
#define KS32C_REFEXTCON (KS32C_REG_BASE + 0x303c)
 
// DRAM
#define KS32C_REFEXTCON_TCSR_1C 0x00000000
#define KS32C_REFEXTCON_TCHR_1C 0x00000000
// SDRAM
#define KS32C_REFEXTCON_TRC_4C 0x00060000
// DRAM+SDRAM
#define KS32C_REFEXTCON_REN 0x00010000
#define KS32C_REFEXTCON_VSF 0x00008000
#define KS32C_REFEXTCON_BASE 0x00000360
 
#define KS32C_REFEXTCON_RCV_shift 21
 
//-----------------------------------------------------------------------------
// INTC
 
#define KS32C_INTMOD (KS32C_REG_BASE + 0x4000)
#define KS32C_INTPND (KS32C_REG_BASE + 0x4004)
#define KS32C_INTMSK (KS32C_REG_BASE + 0x4008)
#define KS32C_INTPRI0 (KS32C_REG_BASE + 0x400c)
#define KS32C_INTPRI1 (KS32C_REG_BASE + 0x4010)
#define KS32C_INTPRI2 (KS32C_REG_BASE + 0x4014)
#define KS32C_INTPRI3 (KS32C_REG_BASE + 0x4018)
#define KS32C_INTPRI4 (KS32C_REG_BASE + 0x401c)
#define KS32C_INTPRI5 (KS32C_REG_BASE + 0x4020)
#define KS32C_INTOFFSET (KS32C_REG_BASE + 0x4024)
#define KS32C_PNDPRI (KS32C_REG_BASE + 0x4028)
#define KS32C_PNDTEST (KS32C_REG_BASE + 0x402c)
#define KS32C_INTOFFSET_FIQ (KS32C_REG_BASE + 0x4030)
#define KS32C_INTOFFSET_IRQ (KS32C_REG_BASE + 0x4034)
 
#define KS32C_INTMSK_GLOBAL (1<<21)
 
//-----------------------------------------------------------------------------
// PIO
 
#define KS32C_IOPMOD (KS32C_REG_BASE + 0x5000)
#define KS32C_IOPCON (KS32C_REG_BASE + 0x5004)
#define KS32C_IOPDATA (KS32C_REG_BASE + 0x5008)
 
//-----------------------------------------------------------------------------
// Timers
 
#define KS32C_TMOD (KS32C_REG_BASE + 0x6000)
#define KS32C_TDATA0 (KS32C_REG_BASE + 0x6004)
#define KS32C_TDATA1 (KS32C_REG_BASE + 0x6008)
#define KS32C_TCNT0 (KS32C_REG_BASE + 0x600c)
#define KS32C_TCNT1 (KS32C_REG_BASE + 0x6010)
 
#define KS32C_TMOD_TE0 0x00000001
#define KS32C_TMOD_TMD0 0x00000002
#define KS32C_TMOD_TCLR0 0x00000004
#define KS32C_TMOD_TE1 0x00000008
#define KS32C_TMOD_TMD1 0x00000010
#define KS32C_TMOD_TCLR1 0x00000020
 
 
//-----------------------------------------------------------------------------
// UART
 
#define KS32C_UART0_BASE (KS32C_REG_BASE + 0xd000)
#define KS32C_UART1_BASE (KS32C_REG_BASE + 0xe000)
 
#define KS32C_UART_LCON 0x0000
#define KS32C_UART_CON 0x0004
#define KS32C_UART_STAT 0x0008
#define KS32C_UART_TXBUF 0x000c
#define KS32C_UART_RXBUF 0x0010
#define KS32C_UART_BRDIV 0x0014
#define KS32C_UART_BRDCNT 0x0018
#define KS32C_UART_BRDCLK 0x001c
 
#define KS32C_UART_LCON_5_DBITS 0x00
#define KS32C_UART_LCON_6_DBITS 0x01
#define KS32C_UART_LCON_7_DBITS 0x02
#define KS32C_UART_LCON_8_DBITS 0x03
#define KS32C_UART_LCON_1_SBITS 0x00
#define KS32C_UART_LCON_2_SBITS 0x04
#define KS32C_UART_LCON_NO_PARITY 0x00
#define KS32C_UART_LCON_EVEN_PARITY 0x00
#define KS32C_UART_LCON_ODD_PARITY 0x28
#define KS32C_UART_LCON_1_PARITY 0x30
#define KS32C_UART_LCON_0_PARITY 0x38
#define KS32C_UART_LCON_SCS 0x40
#define KS32C_UART_LCON_IR 0x80
 
#define KS32C_UART_CON_RXM_MASK 0x03
#define KS32C_UART_CON_RXM_INT 0x01
#define KS32C_UART_CON_TXM_MASK 0x0c
#define KS32C_UART_CON_TXM_INT 0x08
#define KS32C_UART_CON_RX_ERR_INT 0x04
 
 
#define KS32C_UART_STAT_DTR 0x10
#define KS32C_UART_STAT_RDR 0x20
#define KS32C_UART_STAT_TXE 0x40 // tx empty
#define KS32C_UART_STAT_TC 0x80 // tx complete
 
//-----------------------------------------------------------------------------
// Cache
#define KS32C_CACHE_SET0_ADDR 0x14000000
#define KS32C_CACHE_SET1_ADDR 0x14800000
#define KS32C_CACHE_TAG_ADDR 0x15000000
 
//-----------------------------------------------------------------------------
// Memory map is 1-1
 
#define CYGARC_PHYSICAL_ADDRESS(_x_) (_x_)
 
//-----------------------------------------------------------------------------
// end of plf_io.h
#endif // CYGONCE_HAL_PLF_IO_H
/v2_0/ChangeLog
0,0 → 1,127
2002-10-19 Jonathan Larmour <jifl@eCosCentric.com>
 
* include/hal_platform_setup.h (PLATFORM_SETUP1): Only define if
ROM or ROMRAM, not if STUBS which can be RAM.
 
2003-02-05 Nick Garnett <nickg@calivar.com>
 
* include/plf_io.h (CYGARC_PHYSICAL_ADDRESS): Added this
definition to keep redboot_linux_exec.c happy.
 
2002-10-03 Jonathan Larmour <jifl@eCosCentric.com>
 
* include/pkgconf/mlt_arm_snds_ram.ldi: Add definition of heap1.
 
2002-05-07 Gary Thomas <gthomas@redhat.com>
 
* cdl/hal_arm_snds.cdl:
Standardize CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_DEFAULT usage.
 
2001-12-06 Jesper Skov <jskov@redhat.com>
 
* include/hal_platform_setup.h (PLATFORM_SETUP1): Don't trust the
syscfg SDRAM request bit as suggested by manual - always set it to
what works. Use relative loads to get a pointer to the tables with
system controller setup data.
 
* src/snds100_misc.c: Don't mess up the syscfg register.
 
2001-10-19 Jesper Skov <jskov@redhat.com>
 
* include/plf_io.h (KS32C_REFEXTCON): Split in DRAM and SDRAM
settings.
 
* include/hal_platform_setup.h: Fix KS32C_REFEXTCON parameters,
and set some LEDs to help debugging.
 
* cdl/hal_arm_snds.cdl: On the SNDS100 board the CPU runs at
50MHZ.
 
* include/pkgconf/mlt_arm_snds_rom.ldi: Moved flash to
0x01800000.
* include/pkgconf/mlt_arm_snds_rom.mlt: Same.
* include/pkgconf/mlt_arm_snds_rom.h: Same.
 
* include/hal_platform_setup.h: Added LED macro. Use relative
branch in reset vector. Moved flash to 0x01800000.
 
2001-10-18 Jesper Skov <jskov@redhat.com>
 
* src/hal_diag.c: Definition names updated.
* src/snds100_misc.c: Same.
 
* include/pkgconf/mlt_arm_snds_rom.ldi: Added.
* include/pkgconf/mlt_arm_snds_rom.mlt: Same.
* include/pkgconf/mlt_arm_snds_rom.h: Same.
 
* include/pkgconf/mlt_arm_snds_ram.ldi: Updated layout.
* include/pkgconf/mlt_arm_snds_ram.mlt: Same.
* include/pkgconf/mlt_arm_snds_ram.h: Same.
 
* include/hal_platform_setup.h: Fixed instruction typo.
 
* include/hal_platform_ints.h: Vector definitions renamed to match
those in E7T HAL.
 
* include/hal_cache.h: Replaced with E7T HAL version.
 
* cdl/hal_arm_snds.cdl: Added default baud rate option, ROM
startup mode, and removed PID tools make rules.
 
2001-10-12 Jesper Skov <jskov@redhat.com>
 
* src/hal_diag.c: Copied here from E7T HAL.
* src/snds100_misc.c: Functions replaced with E7T HAL
versions.
 
* include/plf_io.h: Added.
 
* include/hal_platform_setup.h (PLATFORM_SETUP1): Code matching
board mon.
 
2001-10-05 Jonathan Larmour <jlarmour@redhat.com>
 
* include/hal_cache.h: Don't define cache dimensions at all rather
than using 0.
 
2001-08-22 Gary Thomas <gthomas@redhat.com>
 
* src/snds100_misc.c:
* src/hal_diag.c:
printf() is no longer a part of RedBoot. Thus all programs
must use diag_printf() and related functions instead.
 
//===========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//===========================================================================
/v2_0/src/ks32c5000.h
0,0 → 1,240
//==========================================================================
//
// ks32c5000.h
//
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose:
// Description:
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
/*
* structure definitions for Samsung KS32C5000 peripheral registers
*/
 
typedef volatile unsigned int reg;
 
#define Bit(n) (1<<(n))
 
 
/*
* Interrupt Controller
*/
 
typedef struct
{
reg intmod; // Interrupt mode register
reg intpnd; // Interrupt pending register
reg intmsk; // Interrupt mask register
reg intpri0; // Interrupt priority register
reg intpri1;
reg intpri2;
reg intpri3;
reg intpri4;
reg intpri5;
reg intoffset; // Interrupt offset register
} tInterruptController;
 
 
/* The following bit masks are for use in the intmod, intpnd, and
* intmsk registers
*/
 
#define IntMaskExt0 Bit(0)
#define IntMaskExt1 Bit(1)
#define IntMaskExt2 Bit(2)
#define IntMaskExt3 Bit(3)
#define IntMaskUart0Tx Bit(4)
#define IntMaskUart0Rx Bit(5)
#if defined(CYG_HAL_CPUTYPE_KS32C5000A)
#define IntMaskUart0Err Bit(6)
#define IntMaskUart1Tx Bit(7)
#define IntMaskUart1Rx Bit(8)
#define IntMaskUart1Err Bit(9)
#define IntMaskDma0 Bit(10)
#define IntMaskDma1 Bit(11)
#define IntMaskTimer0 Bit(12)
#define IntMaskTimer1 Bit(13)
#define IntMaskHDLCA Bit(14)
#define IntMaskHDLCB Bit(15)
#else
#define IntMaskUart1Tx Bit(6)
#define IntMaskUart1Rx Bit(7)
#define IntMaskDma0 Bit(8)
#define IntMaskDma1 Bit(9)
#define IntMaskTimer0 Bit(10)
#define IntMaskTimer1 Bit(11)
#define IntMaskHDLCATx Bit(12)
#define IntMaskHDLCARx Bit(13)
#define IntMaskHDLCBTx Bit(14)
#define IntMaskHDLCBRx Bit(15)
#endif
#define IntMaskEtherBDMATx Bit(16)
#define IntMaskEtherBDMARx Bit(17)
#define IntMaskEtherMacTx Bit(18)
#define IntMaskEtherMacRx Bit(19)
#define IntMaskI2C Bit(20)
#define IntMaskGlobal Bit(21)
 
/*
* Timers
*/
 
typedef struct
{
reg tmod; // Timer mode
reg tdata0; // Timer 0 Data
reg tdata1; // Timer 1 Data
reg tcnt0; // Timer 0 Count
reg tcnt1; // Timer 1 Count
}tTimers;
 
#define TimerModeEnable0 Bit(0)
#define TimerModeToggle0 Bit(1)
#define TimerModeInitOut0 Bit(2)
#define TimerModeEnable1 Bit(3)
#define TimerModeToggle1 Bit(4)
#define TimerModeInitOut1 Bit(5)
 
 
/*
* UART
*/
 
typedef struct
{
reg ulcon; // UART Line Control
reg ucon; // UART Control
reg ustat; // UART Status
reg utxbuf; // UART Tx Buffer
reg urxbuf; // UART Rx Buffer
reg brdiv; // UART Baud Rate Divisor
reg brdcnt; // UART Baud Rate Counter
reg brdclk; // UART Baud Rate Clock
}tUart;
 
/* UART Line Control */
 
#define UartLineWordLenMask 0x03
#define UartLineWordLen5 0
#define UartLineWordLen6 1
#define UartLineWordLen7 2
#define UartLineWordLen8 3
 
#define UartLineStopMask (1 << 2)
#define UartLineStop1 (0 << 2)
#define UartLineStop2 (1 << 2)
 
#define UartLineParityMask (0x07 << 3)
#define UartLineParityNone (0 << 3)
#define UartLineParityOdd (4 << 3)
#define UartLineParityEven (5 << 3)
#define UartLineParityMark (6 << 3)
#define UartLineParitySpace (7 << 3)
 
#define UartLineInfraRedEnable Bit(7)
 
 
/* UART Control */
 
 
#define UartControlRxModeMask 3
#define UartControlRxModeDisabled 0
#define UartControlRxModeInterrupt 1
#define UartControlRxModeDma0 2
#define UartControlRxModeDma1 3
 
#define UartControlRxStatusIntEnable Bit(2)
 
#define UartControlTxModeMask (0x3 <<3)
#define UartControlTxModeDisable (0 <<3)
#define UartControlTxModeInterrupt (1 <<3)
#define UartControlTxModeDma0 (2 <<3)
#define UartControlTxModeDma1 (3 <<3)
 
#define UartControlDSR Bit(5)
 
#define UartControlSendBreak Bit(6)
 
#define UartControlLoopback Bit(7)
 
 
/* UART Status */
 
#define UartStatusRxOverrunError Bit(0)
#define UartStatusRxParityError Bit(1)
#define UartStatusRxFrameError Bit(2)
#define UartStatusRxBreak Bit(3)
#define UartStatusDTR Bit(4)
#define UartStatusRxDataAvail Bit(5)
#define UartStatusTxBufEmpty Bit(6)
#define UartStatusTxDone Bit(7)
 
 
 
 
// macros for external timing control registers
 
#define Tcos0(n) (((n)&7)<<0)
#define Tacs0(n) (((n)&7)<<3)
#define Tcoh0(n) (((n)&7)<<6)
#define Tacc0(n) (((n)&7)<<9)
 
#define Tcos1(n) (((n)&7)<<16)
#define Tacs1(n) (((n)&7)<<19)
#define Tcoh1(n) (((n)&7)<<22)
#define Tacc1(n) (((n)&7)<<25)
#define Tcos2(n) (((n)&7)<<0)
#define Tacs2(n) (((n)&7)<<3)
#define Tcoh2(n) (((n)&7)<<6)
#define Tacc2(n) (((n)&7)<<9)
 
#define Tcos3(n) (((n)&7)<<16)
#define Tacs3(n) (((n)&7)<<19)
#define Tcoh3(n) (((n)&7)<<22)
#define Tacc3(n) (((n)&7)<<25)
/v2_0/src/snds100_misc.c
0,0 → 1,286
//==========================================================================
//
// snds100_misc.c
//
// HAL misc board support code for Samsung SNDS100
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): gthomas
// Contributors: gthomas, jskov
// Grant Edwards <grante@visi.com>
// Date: 2001-07-31
// Purpose: HAL board support
// Description: Implementations of HAL board interfaces
//
//####DESCRIPTIONEND####
//
//========================================================================*/
 
#include <pkgconf/hal.h>
 
#include <cyg/infra/cyg_type.h> // base types
#include <cyg/infra/cyg_trac.h> // tracing macros
#include <cyg/infra/cyg_ass.h> // assertion macros
#include <cyg/infra/diag.h> // diag_printf()
 
#include <cyg/hal/hal_io.h> // IO macros
#include <cyg/hal/hal_arch.h> // Register state info
#include <cyg/hal/hal_diag.h>
#include <cyg/hal/hal_cache.h>
#include <cyg/hal/hal_intr.h> // necessary?
#include <cyg/hal/hal_if.h> // calling interface
#include <cyg/hal/hal_misc.h> // helper functions
#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
#include <cyg/hal/drv_api.h> // HAL ISR support
#endif
 
#include "ks32c5000.h"
#include <cyg/hal/plf_io.h>
 
//======================================================================
// Use Timer0 for kernel clock
 
static cyg_uint32 _period;
 
#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
static cyg_interrupt abort_interrupt;
static cyg_handle_t abort_interrupt_handle;
 
// This ISR is called only for the Abort button interrupt
static int
ks32c_abort_isr(cyg_vector_t vector, cyg_addrword_t data, HAL_SavedRegisters *regs)
{
cyg_hal_user_break((CYG_ADDRWORD*)regs);
cyg_drv_interrupt_acknowledge(CYGNUM_HAL_INTERRUPT_EXT0);
return 0; // No need to run DSR
}
#endif
 
void hal_clock_initialize(cyg_uint32 period)
{
cyg_uint32 tmod;
 
// Disable timer 0
HAL_READ_UINT32(KS32C_TMOD, tmod);
tmod &= ~(KS32C_TMOD_TE0);
HAL_WRITE_UINT32(KS32C_TMOD, 0);
 
tmod &= ~(KS32C_TMOD_TMD0 | KS32C_TMOD_TCLR0);
tmod |= KS32C_TMOD_TE0;
 
// Set counter
HAL_WRITE_UINT32(KS32C_TDATA0, period);
 
// And enable timer
HAL_WRITE_UINT32(KS32C_TMOD, tmod);
 
_period = period;
 
#ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
cyg_drv_interrupt_create(CYGNUM_HAL_INTERRUPT_EXT0,
99, // Priority
0, // Data item passed to interrupt handler
ks32c_abort_isr,
0,
&abort_interrupt_handle,
&abort_interrupt);
cyg_drv_interrupt_attach(abort_interrupt_handle);
cyg_drv_interrupt_unmask(CYGNUM_HAL_INTERRUPT_EXT0);
#endif
}
 
void hal_clock_reset(cyg_uint32 vector, cyg_uint32 period)
{
_period = period;
}
 
void hal_clock_read(cyg_uint32 *pvalue)
{
cyg_uint32 value;
 
HAL_READ_UINT32(KS32C_TCNT0, value);
*pvalue = _period - value;
}
 
//======================================================================
// Interrupt controller stuff
 
extern volatile tInterruptController ks32c5000_int; // Interrupt controller registers
extern volatile unsigned long EXTACON0; // Extern access control reg
extern volatile unsigned long EXTACON1; // Extern access control reg
extern volatile unsigned long IOPCON; // I/O Port Control reg
extern volatile unsigned long IOPMOD;
extern volatile unsigned long SYSCON;
 
void hal_hardware_init(void)
{
cyg_uint32 intmask, syscfg;
 
// Set up eCos/ROM interfaces
hal_if_init();
 
// Enable cache
HAL_READ_UINT32(KS32C_SYSCFG, syscfg);
syscfg &= ~KS32C_SYSCFG_CM_MASK;
syscfg |= KS32C_SYSCFG_CM_0R_8C|KS32C_SYSCFG_WE;
HAL_WRITE_UINT32(KS32C_SYSCFG, syscfg);
HAL_UCACHE_INVALIDATE_ALL();
HAL_UCACHE_ENABLE();
 
// Clear global interrupt mask bit
HAL_READ_UINT32(KS32C_INTMSK, intmask);
intmask &= ~KS32C_INTMSK_GLOBAL;
HAL_WRITE_UINT32(KS32C_INTMSK, intmask);
}
 
 
// This routine is called to respond to a hardware interrupt (IRQ). It
// should interrogate the hardware and return the IRQ vector number.
 
int hal_IRQ_handler(void)
{
// Do hardware-level IRQ handling
cyg_uint32 irq_status;
HAL_READ_UINT32(KS32C_INTOFFSET_IRQ, irq_status);
irq_status = irq_status / 4;
if (CYGNUM_HAL_ISR_MAX >= irq_status)
return irq_status;
// It's a bit bogus to test for FIQs after IRQs, but we use the
// latter more, so don't impose the overhead of checking for FIQs
HAL_READ_UINT32(KS32C_INTOFFSET_FIQ, irq_status);
irq_status = irq_status / 4;
if (CYGNUM_HAL_ISR_MAX >= irq_status)
return irq_status;
return CYGNUM_HAL_INTERRUPT_NONE;
}
 
 
//
// Interrupt control
//
 
void hal_interrupt_mask(int vector)
{
cyg_uint32 mask, old_mask;
HAL_READ_UINT32(KS32C_INTMSK, mask);
old_mask = mask;
mask |= (1<<vector);
HAL_WRITE_UINT32(KS32C_INTMSK, mask);
}
 
void hal_interrupt_unmask(int vector)
{
cyg_uint32 mask, old_mask;
HAL_READ_UINT32(KS32C_INTMSK, mask);
old_mask = mask;
mask &= ~(1<<vector);
HAL_WRITE_UINT32(KS32C_INTMSK, mask);
}
 
void hal_interrupt_acknowledge(int vector)
{
HAL_WRITE_UINT32(KS32C_INTPND, (1<<vector));
}
 
void hal_interrupt_configure(int vector, int level, int up)
{
}
 
void hal_interrupt_set_level(int vector, int level)
{
}
 
void hal_show_IRQ(int vector, int data, int handler)
{
}
 
// -------------------------------------------------------------------------
//
// Delay for some number of micro-seconds
//
void hal_delay_us(cyg_int32 usecs)
{
cyg_uint32 count;
cyg_uint32 ticks = ((CYGNUM_HAL_RTC_PERIOD*CYGNUM_HAL_RTC_DENOMINATOR)/1000000) * usecs;
cyg_uint32 tmod;
 
// Disable timer 1
HAL_READ_UINT32(KS32C_TMOD, tmod);
tmod &= ~(KS32C_TMOD_TE1);
HAL_WRITE_UINT32(KS32C_TMOD, tmod);
 
tmod &= ~(KS32C_TMOD_TMD1 | KS32C_TMOD_TCLR1);
tmod |= KS32C_TMOD_TE1;
 
// Clear pending flag
HAL_WRITE_UINT32(KS32C_INTPND, (1 << CYGNUM_HAL_INTERRUPT_TIMER1));
 
// Set counter
HAL_WRITE_UINT32(KS32C_TDATA1, ticks);
 
// And enable timer
HAL_WRITE_UINT32(KS32C_TMOD, tmod);
 
// Wait for timer to underflow. Can't test the timer completion
// bit without actually enabling the interrupt. So instead watch
// the counter.
ticks /= 2; // wait for this threshold
 
// Wait till timer counts below threshold
do {
HAL_READ_UINT32(KS32C_TCNT1, count);
} while (count >= ticks);
// then wait for it to be reloaded
do {
HAL_READ_UINT32(KS32C_TCNT1, count);
} while (count < ticks);
 
// Then disable timer 1 again
tmod &= ~KS32C_TMOD_TE1;
HAL_WRITE_UINT32(KS32C_TMOD, tmod);
}
 
// No way to reset board
 
void hal_reset(void)
{
CYG_INTERRUPT_STATE old;
HAL_DISABLE_INTERRUPTS(old);
while (1)
;
}
/v2_0/src/hal_diag.c
0,0 → 1,378
/*=============================================================================
//
// hal_diag.c
//
// HAL diagnostic output code
//
//=============================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under
// the terms of the GNU General Public License as published by the Free
// Software Foundation; either version 2 or (at your option) any later version.
//
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
// for more details.
//
// You should have received a copy of the GNU General Public License along
// with eCos; if not, write to the Free Software Foundation, Inc.,
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
//
// As a special exception, if other files instantiate templates or use macros
// or inline functions from this file, or you compile this file and link it
// with other works to produce a work based on this file, this file does not
// by itself cause the resulting work to be covered by the GNU General Public
// License. However the source code for this file must still be made available
// in accordance with section (3) of the GNU General Public License.
//
// This exception does not invalidate any other reasons why a work based on
// this file might be covered by the GNU General Public License.
//
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): jskov
// Contributors:jskov
// Date: 2001-03-16
// Purpose: HAL diagnostic output
// Description: Implementations of HAL diagnostic output support.
//
//####DESCRIPTIONEND####
//
//===========================================================================*/
 
#include <pkgconf/hal.h>
#include CYGBLD_HAL_PLATFORM_H
 
#include <cyg/infra/cyg_type.h> // base types
 
#include <cyg/hal/hal_arch.h> // SAVE/RESTORE GP macros
#include <cyg/hal/hal_io.h> // IO macros
#include <cyg/hal/hal_if.h> // interface API
#include <cyg/hal/hal_intr.h> // HAL_ENABLE/MASK/UNMASK_INTERRUPTS
#include <cyg/hal/hal_misc.h> // Helper functions
#include <cyg/hal/drv_api.h> // CYG_ISR_HANDLED
 
#include <cyg/hal/plf_io.h> // SIO registers
 
#define SIO_BRDDIV (((CYGNUM_HAL_CPUCLOCK/2/16/CYGNUM_HAL_VIRTUAL_VECTOR_CHANNELS_DEFAULT_BAUD)<<4))
 
//-----------------------------------------------------------------------------
typedef struct {
cyg_uint8* base;
cyg_int32 msec_timeout;
int isr_vector_rx;
int isr_vector_tx;
} channel_data_t;
 
//-----------------------------------------------------------------------------
 
char hextab[] = "0123456789ABCDEF";
 
void putc_ser(int c)
{
cyg_uint8* base = (cyg_uint8*)KS32C_UART1_BASE;
cyg_uint32 status;
do {
HAL_READ_UINT32(base+KS32C_UART_STAT, status);
} while ((status & KS32C_UART_STAT_TXE) == 0);
 
HAL_WRITE_UINT32(base+KS32C_UART_TXBUF, c);
}
 
void putint(int a)
{
int i;
putc_ser('0');
putc_ser('x');
for (i = 0; i < 8; i++) {
putc_ser(hextab[(a>>(28-(4*i))) & 0x0f]);
}
putc_ser('\r');
putc_ser('\n');
}
 
void
init_ser(void)
{
cyg_uint8* base = (cyg_uint8*)KS32C_UART1_BASE;
 
// 8-1-no parity.
HAL_WRITE_UINT32(base+KS32C_UART_LCON,
KS32C_UART_LCON_8_DBITS|KS32C_UART_LCON_1_SBITS|KS32C_UART_LCON_NO_PARITY);
 
// Mask interrupts.
HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_UART0_RX);
HAL_INTERRUPT_MASK(CYGNUM_HAL_INTERRUPT_UART0_TX);
 
HAL_WRITE_UINT32(base+KS32C_UART_BRDIV, SIO_BRDDIV);
}
 
//-----------------------------------------------------------------------------
 
static void
cyg_hal_plf_serial_init_channel(void* __ch_data)
{
cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
 
// 8-1-no parity.
HAL_WRITE_UINT32(base+KS32C_UART_LCON,
KS32C_UART_LCON_8_DBITS|KS32C_UART_LCON_1_SBITS|KS32C_UART_LCON_NO_PARITY);
 
HAL_WRITE_UINT32(base+KS32C_UART_BRDIV, SIO_BRDDIV);
 
// Mask interrupts
HAL_INTERRUPT_MASK(((channel_data_t*)__ch_data)->isr_vector_rx);
HAL_INTERRUPT_MASK(((channel_data_t*)__ch_data)->isr_vector_tx);
 
// Enable RX and TX
HAL_WRITE_UINT32(base+KS32C_UART_CON, KS32C_UART_CON_RXM_INT|KS32C_UART_CON_TXM_INT);
}
 
void
cyg_hal_plf_serial_putc(void *__ch_data, char c)
{
cyg_uint8* base = ((channel_data_t*)__ch_data)->base;
cyg_uint32 status, ch;
CYGARC_HAL_SAVE_GP();
 
do {
HAL_READ_UINT32(base+KS32C_UART_STAT, status);
} while ((status & KS32C_UART_STAT_TXE) == 0);
 
ch = (cyg_uint32)c;
HAL_WRITE_UINT32(base+KS32C_UART_TXBUF, ch);
 
CYGARC_HAL_RESTORE_GP();
}
 
static cyg_bool
cyg_hal_plf_serial_getc_nonblock(void* __ch_data, cyg_uint8* ch)
{
channel_data_t* chan = (channel_data_t*)__ch_data;
cyg_uint8* base = chan->base;
cyg_uint32 stat;
cyg_uint32 c;
 
HAL_READ_UINT32(base+KS32C_UART_STAT, stat);
if ((stat & KS32C_UART_STAT_RDR) == 0)
return false;
 
HAL_READ_UINT32(base+KS32C_UART_RXBUF, c);
*ch = (cyg_uint8)(c & 0xff);
 
HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
 
return true;
}
 
cyg_uint8
cyg_hal_plf_serial_getc(void* __ch_data)
{
cyg_uint8 ch;
CYGARC_HAL_SAVE_GP();
 
while(!cyg_hal_plf_serial_getc_nonblock(__ch_data, &ch));
 
CYGARC_HAL_RESTORE_GP();
return ch;
}
 
static void
cyg_hal_plf_serial_write(void* __ch_data, const cyg_uint8* __buf,
cyg_uint32 __len)
{
CYGARC_HAL_SAVE_GP();
 
while(__len-- > 0)
cyg_hal_plf_serial_putc(__ch_data, *__buf++);
 
CYGARC_HAL_RESTORE_GP();
}
 
static void
cyg_hal_plf_serial_read(void* __ch_data, cyg_uint8* __buf, cyg_uint32 __len)
{
CYGARC_HAL_SAVE_GP();
 
while(__len-- > 0)
*__buf++ = cyg_hal_plf_serial_getc(__ch_data);
 
CYGARC_HAL_RESTORE_GP();
}
 
cyg_bool
cyg_hal_plf_serial_getc_timeout(void* __ch_data, cyg_uint8* ch)
{
int delay_count;
channel_data_t* chan = (channel_data_t*)__ch_data;
cyg_bool res;
CYGARC_HAL_SAVE_GP();
 
delay_count = chan->msec_timeout * 10; // delay in .1 ms steps
 
for(;;) {
res = cyg_hal_plf_serial_getc_nonblock(__ch_data, ch);
if (res || 0 == delay_count--)
break;
CYGACC_CALL_IF_DELAY_US(100);
}
 
CYGARC_HAL_RESTORE_GP();
return res;
}
 
static int
cyg_hal_plf_serial_control(void *__ch_data, __comm_control_cmd_t __func, ...)
{
static int irq_state = 0;
channel_data_t* chan = (channel_data_t*)__ch_data;
int ret = 0;
CYGARC_HAL_SAVE_GP();
 
switch (__func) {
case __COMMCTL_IRQ_ENABLE:
irq_state = 1;
HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
HAL_INTERRUPT_UNMASK(chan->isr_vector_rx);
break;
case __COMMCTL_IRQ_DISABLE:
ret = irq_state;
irq_state = 0;
HAL_INTERRUPT_MASK(chan->isr_vector_rx);
break;
case __COMMCTL_DBG_ISR_VECTOR:
ret = chan->isr_vector_rx;
break;
case __COMMCTL_SET_TIMEOUT:
{
va_list ap;
 
va_start(ap, __func);
 
ret = chan->msec_timeout;
chan->msec_timeout = va_arg(ap, cyg_uint32);
 
va_end(ap);
}
default:
break;
}
CYGARC_HAL_RESTORE_GP();
return ret;
}
 
static int
cyg_hal_plf_serial_isr(void *__ch_data, int* __ctrlc,
CYG_ADDRWORD __vector, CYG_ADDRWORD __data)
{
int res = 0;
channel_data_t* chan = (channel_data_t*)__ch_data;
cyg_uint32 c;
cyg_uint8 ch;
cyg_uint32 stat;
CYGARC_HAL_SAVE_GP();
 
*__ctrlc = 0;
HAL_READ_UINT32(chan->base+KS32C_UART_STAT, stat);
if ( (stat & KS32C_UART_STAT_RDR) != 0 ) {
 
HAL_READ_UINT32(chan->base+KS32C_UART_RXBUF, c);
ch = (cyg_uint8)(c & 0xff);
if( cyg_hal_is_break( &ch , 1 ) )
*__ctrlc = 1;
 
res = CYG_ISR_HANDLED;
}
 
HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector_rx);
 
CYGARC_HAL_RESTORE_GP();
return res;
}
 
static channel_data_t ks32c_ser_channels[2] = {
{ (cyg_uint8*)KS32C_UART0_BASE, 1000, CYGNUM_HAL_INTERRUPT_UART0_RX, CYGNUM_HAL_INTERRUPT_UART0_TX },
{ (cyg_uint8*)KS32C_UART1_BASE, 1000, CYGNUM_HAL_INTERRUPT_UART1_RX, CYGNUM_HAL_INTERRUPT_UART1_TX }
};
 
static void
cyg_hal_plf_serial_init(void)
{
hal_virtual_comm_table_t* comm;
int cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
 
// Init channels
cyg_hal_plf_serial_init_channel(&ks32c_ser_channels[0]);
cyg_hal_plf_serial_init_channel(&ks32c_ser_channels[1]);
 
// Setup procs in the vector table
 
// Set channel 0
CYGACC_CALL_IF_SET_CONSOLE_COMM(0);
comm = CYGACC_CALL_IF_CONSOLE_PROCS();
CYGACC_COMM_IF_CH_DATA_SET(*comm, &ks32c_ser_channels[0]);
CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write);
CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read);
CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc);
CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc);
CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control);
CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr);
CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout);
 
// Set channel 1
CYGACC_CALL_IF_SET_CONSOLE_COMM(1);
comm = CYGACC_CALL_IF_CONSOLE_PROCS();
CYGACC_COMM_IF_CH_DATA_SET(*comm, &ks32c_ser_channels[1]);
CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write);
CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read);
CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc);
CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc);
CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control);
CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr);
CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout);
 
// Restore original console
CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
}
 
void
cyg_hal_plf_comms_init(void)
{
static int initialized = 0;
 
if (initialized)
return;
 
initialized = 1;
 
cyg_hal_plf_serial_init();
}
 
//-----------------------------------------------------------------------------
// LED
void
hal_diag_led(int mask)
{
#if 0
cyg_uint32 l;
 
HAL_READ_UINT32(KS32C_IOPDATA, l);
l &= ~0x000000f0;
l |= (mask & 0xf) << 4;
HAL_WRITE_UINT32(KS32C_IOPDATA, l);
#endif
}
 
//-----------------------------------------------------------------------------
// End of hal_diag.c
/v2_0/misc/redboot_RAM.ecm
0,0 → 1,72
cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template package };
cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };
 
cdl_configuration eCos {
description "" ;
hardware snds ;
template redboot ;
package -hardware CYGPKG_HAL_ARM v2_0 ;
package -hardware CYGPKG_HAL_ARM_SNDS v2_0 ;
package -template CYGPKG_HAL v2_0 ;
package -template CYGPKG_INFRA v2_0 ;
package -template CYGPKG_REDBOOT v2_0 ;
package -template CYGPKG_ISOINFRA v2_0 ;
package -template CYGPKG_LIBC_STRING v2_0 ;
package -template CYGPKG_NS_DNS v2_0 ;
};
 
cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
user_value 6144
};
 
cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
user_value 0
};
 
cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
inferred_value 0
};
 
cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
inferred_value 1
};
 
cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
user_value 1
};
 
cdl_component CYGBLD_BUILD_REDBOOT {
user_value 1
};
 
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_DNS_HEADER {
inferred_value 1 <cyg/ns/dns/dns.h>
};
 
cdl_option CYGPKG_NS_DNS_BUILD {
inferred_value 0
};
 
 
/v2_0/misc/redboot_ROM.ecm
0,0 → 1,80
cdl_savefile_version 1;
cdl_savefile_command cdl_savefile_version {};
cdl_savefile_command cdl_savefile_command {};
cdl_savefile_command cdl_configuration { description hardware template package };
cdl_savefile_command cdl_package { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_component { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_option { value_source user_value wizard_value inferred_value };
cdl_savefile_command cdl_interface { value_source user_value wizard_value inferred_value };
 
cdl_configuration eCos {
description "" ;
hardware snds ;
template redboot ;
package -hardware CYGPKG_HAL_ARM v2_0 ;
package -hardware CYGPKG_HAL_ARM_SNDS v2_0 ;
package -template CYGPKG_HAL v2_0 ;
package -template CYGPKG_INFRA v2_0 ;
package -template CYGPKG_REDBOOT v2_0 ;
package -template CYGPKG_ISOINFRA v2_0 ;
package -template CYGPKG_LIBC_STRING v2_0 ;
package -template CYGPKG_NS_DNS v2_0 ;
};
 
cdl_option CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE {
user_value 6144
};
 
cdl_option CYGDBG_HAL_COMMON_INTERRUPTS_SAVE_MINIMUM_CONTEXT {
user_value 0
};
 
cdl_option CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM {
inferred_value 0
};
 
cdl_option CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS {
inferred_value 1
};
 
cdl_option CYGSEM_HAL_ROM_MONITOR {
inferred_value 1
};
 
cdl_option CYGHWR_HAL_ARM_BIGENDIAN {
user_value 1
};
 
cdl_component CYG_HAL_STARTUP {
user_value ROM
};
 
cdl_component CYGBLD_BUILD_REDBOOT {
user_value 1
};
 
cdl_option CYGBLD_ISO_STRTOK_R_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_LOCALE_FUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_MEMFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_STRING_STRFUNCS_HEADER {
inferred_value 1 <cyg/libc/string/string.h>
};
 
cdl_option CYGBLD_ISO_DNS_HEADER {
inferred_value 1 <cyg/ns/dns/dns.h>
};
 
cdl_option CYGPKG_NS_DNS_BUILD {
inferred_value 0
};
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.