Mercurial > flash_v2
changeset 1568:2789038a5ebb
* include/hal_diag.h
fix warning.
* include/platform.inc
add h8300_save_vectors macro.
* cdl/hal_h8300_h8300h_aki3068net.cdl
add Linker flags "-mrelax"
move CYGSEM_HAL_H8300_VECTOR_HOOK to hal_h8300.cdl
* src/plf_ide.c
HAL_IDE_INIT return to enumerate controlers.
aki3068net_read_command fix 16bit mode access.
* src/plf_ide.c
16bit bus mode fix.
* include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi
fix vector location from CYGSEM_HAL_H8300_VECTOR_HOOK == 0
| author | asl |
|---|---|
| date | Tue, 06 Apr 2004 20:31:08 +0000 |
| parents | 9a3dbd0dc33d |
| children | 10851723ceff |
| files | packages/hal/h8300/aki3068net/current/ChangeLog packages/hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl packages/hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi packages/hal/h8300/aki3068net/current/include/platform.inc packages/hal/h8300/aki3068net/current/include/plf_io.h packages/hal/h8300/aki3068net/current/src/hal_diag.c packages/hal/h8300/aki3068net/current/src/plf_ide.c |
| diffstat | 7 files changed, 98 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/h8300/aki3068net/current/ChangeLog +++ b/packages/hal/h8300/aki3068net/current/ChangeLog @@ -1,3 +1,34 @@ +2004-03-17 Yoshinori Sato <ysato@users.sourceforge.jp> + + * include/hal_diag.h + fix warning. + +2004-03-02 Yoshinori Sato <ysato@users.sourceforge.jp> + + * include/platform.inc + add h8300_save_vectors macro. + +2004-02-24 Yoshinori Sato <ysato@users.sourceforge.jp> + + * cdl/hal_h8300_h8300h_aki3068net.cdl + add Linker flags "-mrelax" + move CYGSEM_HAL_H8300_VECTOR_HOOK to hal_h8300.cdl + +2004-01-16 Yoichi Koyanagi <yk@tinywillow.com>,Yoshinori Sato <ysato@users.sourceforge.jp> + + * src/plf_ide.c + HAL_IDE_INIT return to enumerate controlers. + aki3068net_read_command fix 16bit mode access. + +2003-12-26 Yoichi Koyanagi <yk@tinywillow.com>,Yoshinori Sato <ysato@users.sourceforge.jp> + + * src/plf_ide.c + 16bit bus mode fix. + +2003-12-04 Yoshinori Sato <ysato@users.sourceforge.jp> + * include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi + fix vector location from CYGSEM_HAL_H8300_VECTOR_HOOK == 0 + 2003-07-18 Nick Garnett <nickg@balti.calivar.com> * cdl/hal_h8300_h8300h_aki3068net.cdl:
--- a/packages/hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl +++ b/packages/hal/h8300/aki3068net/current/cdl/hal_h8300_h8300h_aki3068net.cdl @@ -81,7 +81,7 @@ cdl_package CYGPKG_HAL_H8300_H8300H_AKI3 display "Startup type" flavor data legal_values {"ROM" "RAM"} - default_value {"RAM"} + default_value {"ROM"} no_define define -file system.h CYG_HAL_STARTUP description " @@ -204,7 +204,7 @@ cdl_package CYGPKG_HAL_H8300_H8300H_AKI3 display "Global linker flags" flavor data no_define - default_value { "-g -nostdlib -Wl,--gc-sections -Wl,-static -mh -mint32" } + default_value { "-g -nostdlib -Wl,--gc-sections -Wl,-static -mrelax -mh -mint32" } description " This option controls the global linker flags. Individual packages may define options which override these global flags." @@ -300,20 +300,12 @@ cdl_package CYGPKG_HAL_H8300_H8300H_AKI3 application. This enables features such as utilizing a separate interrupt stack when exceptions are generated." } - cdl_option CYGSEM_HAL_H8300_VECTOR_HOOK { - display "Interrupt Vector Hook" - flavor bool - default_value 1 - parent CYGPKG_HAL_ROM_MONITOR - description " - Interrupt Vector Table Hooking Support" - } cdl_option CYGHWR_HAL_H8300_VECTOR_ADDRESS { display "Hook Vector Address" flavor data - default_value 0xffbf20 + default_value 0xfffd20 + active_if CYGSEM_HAL_H8300_VECTOR_HOOK parent CYGPKG_HAL_ROM_MONITOR - requires { CYGSEM_HAL_H8300_VECTOR_HOOK == 1 } description " Hooking Vector Table Address" } @@ -324,4 +316,19 @@ cdl_package CYGPKG_HAL_H8300_H8300H_AKI3 description " Used SCI Channel base address." } + cdl_option CYGDAT_REDBOOT_H8300_LINUX_COMMAND_START { + display "Default kernel command line start address" + flavor data + default_value 0x5ffe00 + description " + This option uClinux kernel command line start address of default." + } + + cdl_option CYGDAT_REDBOOT_H8300_LINUX_BOOT_COMMAND_LINE { + display "Default command line" + flavor data + default_value { "console=/dev/ttySC1" } + description " + This option uClinux kernel startup command line of default." + } }
--- a/packages/hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi +++ b/packages/hal/h8300/aki3068net/current/include/pkgconf/mlt_h8300_h8300h_aki3068net_rom.ldi @@ -30,13 +30,18 @@ SECTIONS SECTION_rodata (rom, ALIGN (0x1), LMA_EQ_VMA) SECTION_rodata1 (rom, ALIGN (0x1), LMA_EQ_VMA) SECTION_fixup (rom, ALIGN (0x1), LMA_EQ_VMA) +#if !defined(CYGSEM_HAL_H8300_VECTOR_HOOK) + SECTION_int_hook_table (rom, ALIGN (0x2), LMA_EQ_VMA) +#endif SECTION_gcc_except_table (rom, ALIGN (0x1), LMA_EQ_VMA) SECTION_data (ram, WORK, FOLLOWING (.gcc_except_table)) SECTION_bss (ram, ALIGN (0x4), LMA_EQ_VMA) +#if defined(CYGSEM_HAL_H8300_VECTOR_HOOK) #if !defined(CYGPKG_IO_ETH_DRIVERS) - SECTION_int_hook_table (ram, CYGHWR_HAL_H8300_VECTOR_ADDRESS,FOLLOWING (.data)) + SECTION_int_hook_table (ram, CYGHWR_HAL_H8300_VECTOR_ADDRESS, LMA_EQ_VMA) #else - SECTION_int_hook_table (iram, CYGHWR_HAL_H8300_VECTOR_ADDRESS,FOLLOWING (.data)) + SECTION_int_hook_table (iram, CYGHWR_HAL_H8300_VECTOR_ADDRESS, LMA_EQ_VMA) +#endif #endif SECTIONS_END }
--- a/packages/hal/h8300/aki3068net/current/include/platform.inc +++ b/packages/hal/h8300/aki3068net/current/include/platform.inc @@ -65,12 +65,16 @@ ##----------------------------------------------------------------------------- -#if CYGINT_HAL_PLF_IF_IDE != 0 -#define ABWCR_VAL ~((1 << ((CYGHWR_HAL_IDE_REGISTER >> 25) & 7)) |\ - (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 25) & 7))) +#if (CYGINT_HAL_PLF_IF_IDE != 0 && (CYGHWR_HAL_IDE_BUSWIDTH == 16)) +#define ABWCR_VAL ~((1 << ((CYGHWR_HAL_IDE_REGISTER >> 21) & 7)) |\ + (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 21) & 7))) #else #define ABWCR_VAL 0xff #endif +#if (CYGINT_HAL_PLF_IF_IDE != 0) +#define CSCR_VAL ((1 << ((CYGHWR_HAL_IDE_REGISTER >> 21) & 7)) |\ + (1 << ((CYGHWR_HAL_IDE_ALT_REGS >> 21) & 7))) +#endif #define CYGPKG_HAL_H8300_MEMC_DEFINED .macro hal_memc_init @@ -79,13 +83,11 @@ 1: mov.w @er0+,r2 beq 1f + mov.w #0x00ff,e2 ; internal I/O regs (2) high address cmp.w #0xf000,r2 bhi 2f - mov.w #0x00fe,e2 - bra 3f + dec.w #1,e2 ; internal I/O regs (1) high address 2: - mov.w #0x00ff,e2 -3: mov.w @er0+,r1 mov.b r1l,@er2 bra 1b @@ -97,29 +99,28 @@ init_regs: INIT_REGS_DATA(CYGARC_RTCOR,9) INIT_REGS_DATA(CYGARC_RTMCSR,0x30) INIT_REGS_DATA(CYGARC_DRCRB,0x98) -INIT_REGS_DATA(CYGARC_DRCRA,0x3c) +INIT_REGS_DATA(CYGARC_DRCRA,0x38) INIT_REGS_DATA(CYGARC_ASTCR,0xfb) INIT_REGS_DATA(CYGARC_ABWCR,ABWCR_VAL) +#if defined(CSCR_VAL) +INIT_REGS_DATA(CYGARC_CSCR,((CSCR_VAL) & 0xf0) | 0x0f) +#endif +INIT_REGS_DATA(CYGARC_WCRH ,0xff) +INIT_REGS_DATA(CYGARC_WCRL ,0xc8) INIT_REGS_DATA(CYGARC_P1DDR,0xff) INIT_REGS_DATA(CYGARC_P2DDR,0xff) INIT_REGS_DATA(CYGARC_P5DDR,0x01) -INIT_REGS_DATA(CYGARC_P8DDR,0x0c) +INIT_REGS_DATA(CYGARC_P8DDR,0x0e) .word 0 init_regs_end: -;; Thanks Hiroyuki Senshu +;; Thanks Hiroyuki Senshu & Hiroki Minematsu -;; DRAM Setup delay +;; External peripheral setup delay 1: - mov.b #8,r0h + mov.l #420000,er0 ;wait 50ms 2: - mov.b #0,r0l -3: - dec.b r0l - bne 3b - mov.b @CYGARC_RTMCSR,r0l + dec.l #1,er0 bpl 2b - dec r0h - bne 2b #endif .endm @@ -144,6 +145,13 @@ 3: .macro hal_diag_data .endm +#if defined(CYGPKG_IO_ETH_DRIVERS) +#define CYGPKG_HAL_H8300_SAVED_VECTORS + .macro h8300_save_vectors + .byte 15 + .endm +#endif + #------------------------------------------------------------------------------ #endif // ifndef CYGONCE_HAL_PLATFORM_INC # end of platform.inc
--- a/packages/hal/h8300/aki3068net/current/include/plf_io.h +++ b/packages/hal/h8300/aki3068net/current/include/plf_io.h @@ -65,11 +65,11 @@ #define HAL_IDE_INIT() aki3068net_ide_setup() #define HAL_IDE_READ_UINT8( __ctlr, __regno, __val ) \ - aki3068net_read_command(__regno, __val) + aki3068net_read_command(__regno, &(__val)) #define HAL_IDE_READ_UINT16( __ctlr, __regno, __val ) \ - aki3068net_read_data(__regno, __val) + aki3068net_read_data(__regno, &(__val)) #define HAL_IDE_READ_ALTSTATUS( __ctlr, __val ) \ - aki3068net_read_control( __val) + aki3068net_read_control( &(__val)) #define HAL_IDE_WRITE_UINT8( __ctlr, __regno, __val ) \ aki3068net_write_command(__regno, __val)
--- a/packages/hal/h8300/aki3068net/current/src/hal_diag.c +++ b/packages/hal/h8300/aki3068net/current/src/hal_diag.c @@ -60,7 +60,7 @@ #define SCI_BASE ((cyg_uint8*)CYGHAL_PLF_SCI_BASE) -const static channel_data_t channel = { (cyg_uint8*)SCI_BASE, 0, 0}; +static channel_data_t channel = { (cyg_uint8*)SCI_BASE, 0, 0}; void cyg_hal_plf_comms_init(void)
--- a/packages/hal/h8300/aki3068net/current/src/plf_ide.c +++ b/packages/hal/h8300/aki3068net/current/src/plf_ide.c @@ -58,6 +58,7 @@ #include <cyg/hal/hal_arch.h> // architectural definitions #include <cyg/hal/hal_io.h> #include <cyg/hal/hal_if.h> +#include <cyg/hal/hal_endian.h> #include <cyg/hal/plf_intr.h> #include <cyg/hal/var_arch.h> @@ -68,12 +69,13 @@ #define IDE_REG_FEATUERS 1 #define IDE_REG_COMMAND 7 -void aki3068net_ide_setup(void) +int aki3068net_ide_setup(void) { #if CYGHWR_HAL_IDE_BUSWIDTH == 8 aki3068net_write_command(IDE_REG_FEATUERS,0x01); /* 8bit transfer mode */ aki3068net_write_command(IDE_REG_COMMAND, 0xef); /* set featuers */ #endif + return HAL_IDE_NUM_CONTROLLERS; } void aki3068net_read_command(cyg_uint16 r, cyg_uint8 *d) @@ -81,7 +83,7 @@ void aki3068net_read_command(cyg_uint16 #if CYGHWR_HAL_IDE_BUSWIDTH == 8 *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r); #else - *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)) & 0xff; + *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1) + 1); #endif } @@ -90,7 +92,9 @@ void aki3068net_read_data (cyg_uint16 #if CYGHWR_HAL_IDE_BUSWIDTH == 8 *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + r); #else - *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)); + cyg_uint16 dt; + dt = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)); + *d = CYG_LE16_TO_CPU(dt); #endif } @@ -99,7 +103,7 @@ void aki3068net_read_control(cyg_uint8 * #if CYGHWR_HAL_IDE_BUSWIDTH == 8 *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_ALT_REGS + 6); #else - *d = *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_ALT_REGS + 12) & 0xff; + *d = *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_ALT_REGS + 12 + 1); #endif } @@ -108,7 +112,7 @@ void aki3068net_write_command(cyg_uint16 #if CYGHWR_HAL_IDE_BUSWIDTH == 8 *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r) = d; #else - *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1) +1) = d; + *(volatile cyg_uint16 *)(CYGHWR_HAL_IDE_REGISTER + (r << 1)) = d; #endif } @@ -117,7 +121,7 @@ void aki3068net_write_data (cyg_uint16 #if CYGHWR_HAL_IDE_BUSWIDTH == 8 *(volatile cyg_uint8 *)(CYGHWR_HAL_IDE_REGISTER + r) = d; #else - *(volatile CYG_WORD16 *)(CYGHWR_HAL_IDE_REGISTER + (__regno <<1)) = (__val >> 8) | (__val << 8); + *(volatile CYG_WORD16 *)(CYGHWR_HAL_IDE_REGISTER + (r <<1)) = CYG_CPU_TO_LE16(d); #endif }
