Mercurial > ecos
diff packages/hal/arm/arch/current/src/vectors.S @ 154:e2d866e32dac
Merge from eCos master repository on 2001-02-26-23:18:05-GMT
| author | jlarmour |
|---|---|
| date | Tue, 27 Feb 2001 01:21:45 +0000 |
| parents | f935b880e96c |
| children | b939e9cada46 |
line wrap: on
line diff
--- a/packages/hal/arm/arch/current/src/vectors.S +++ b/packages/hal/arm/arch/current/src/vectors.S @@ -119,6 +119,7 @@ // // But usually it's not defined, so the behaviour is the obvious. +#ifndef UNMAPPED #ifdef CYGHWR_HAL_ARM_HAS_MMU # ifndef CYGHWR_HAL_ROM_VADDR # define CYGHWR_HAL_ROM_VADDR __exception_handlers @@ -127,6 +128,7 @@ #else # define UNMAPPED(x) (x) #endif +#endif #define UNMAPPED_PTR(name) \ .##name: .word UNMAPPED(name) @@ -157,7 +159,13 @@ .section ".vectors","ax" .global __exception_handlers __exception_handlers: +#if defined(CYG_HAL_STARTUP_ROM) +// Assumption: ROM code has these vectors at the hardware reset address. +// A simple jump removes any address-space dependencies [i.e. safer] + b reset_vector // 0x00 +#else ldr pc,.reset_vector // 0x00 +#endif ldr pc,.undefined_instruction // 0x04 ldr pc,.software_interrupt // 0x08 start && software int ldr pc,.abort_prefetch // 0x0C @@ -178,7 +186,9 @@ PTR(abort_data) .word 0 // 0x34 PTR(IRQ) // 0x38 PTR(FIQ) // 0x3c +#ifdef CYGSEM_HAL_ARM_PID_ANGEL_BOOT PTR(start) // This is copied to 0x28 for bootup // 0x40 +#endif // location 0x40 is used for storing DRAM size if known // for some platforms. @@ -257,7 +267,7 @@ warm_reset: str r2,[r0,#0x08] -#if defined(CYG_HAL_STARTUP_RAM) +#if defined(CYGSEM_HAL_ARM_PID_ANGEL_BOOT) // Ugly hack to get into supervisor mode ldr r2,[r1,#0x40] str r2,[r0,#0x28]
