Mercurial > ecos
changeset 776:f9fb4fb63c6d
* include/plf_intr.h: Defined CYGNUM_HAL_INTERRUPT_RTC to
counter/compare register interrupt. Added implementations of
HAL_INTERRUPT_MASK, HAL_INTERRUPT_UNMASK, and
HAL_INTERRUPT_ACKNOWLEDGE that will work in eCos rather than just
RedBoot.
* src/plf_misc.c (hal_platform_init): Changed spelling of eCos for
the LED to match the official typography.
| author | nickg |
|---|---|
| date | Thu, 27 Feb 2003 18:32:45 +0000 |
| parents | 3bb006f2785d |
| children | 2bcd1b710e09 |
| files | packages/hal/mips/atlas/current/ChangeLog packages/hal/mips/atlas/current/include/plf_intr.h packages/hal/mips/atlas/current/src/plf_misc.c |
| diffstat | 3 files changed, 86 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/mips/atlas/current/ChangeLog +++ b/packages/hal/mips/atlas/current/ChangeLog @@ -1,3 +1,14 @@ +2003-02-27 Nick Garnett <nickg@calivar.com> + + * include/plf_intr.h: Defined CYGNUM_HAL_INTERRUPT_RTC to + counter/compare register interrupt. Added implementations of + HAL_INTERRUPT_MASK, HAL_INTERRUPT_UNMASK, and + HAL_INTERRUPT_ACKNOWLEDGE that will work in eCos rather than just + RedBoot. + + * src/plf_misc.c (hal_platform_init): Changed spelling of eCos for + the LED to match the official typography. + 2002-08-06 Gary Thomas <gary@chez-thomas.org> 2002-08-06 Motoya Kurotsu <kurotsu@allied-telesis.co.jp>
--- a/packages/hal/mips/atlas/current/include/plf_intr.h +++ b/packages/hal/mips/atlas/current/include/plf_intr.h @@ -77,7 +77,7 @@ #define CYGNUM_HAL_INTERRUPT_TIM0 1 #define CYGNUM_HAL_INTERRUPT_2 2 #define CYGNUM_HAL_INTERRUPT_3 3 -#define CYGNUM_HAL_INTERRUPT_RTC 4 +#define CYGNUM_HAL_INTERRUPT_FPGA_RTC 4 #define CYGNUM_HAL_INTERRUPT_COREHI 5 #define CYGNUM_HAL_INTERRUPT_CORELO 6 #define CYGNUM_HAL_INTERRUPT_7 7 @@ -106,6 +106,8 @@ #define CYGNUM_HAL_INTERRUPT_DEBUG_UART CYGNUM_HAL_INTERRUPT_SER +#define CYGNUM_HAL_INTERRUPT_RTC CYGNUM_HAL_INTERRUPT_HW5 + #define CYGHWR_HAL_INTERRUPT_VECTORS_DEFINED #endif @@ -119,14 +121,78 @@ // interrupts. externC volatile CYG_BYTE hal_interrupt_level[CYGNUM_HAL_ISR_COUNT]; -#define HAL_INTERRUPT_MASK( _vector_ ) \ - HAL_WRITE_UINT32( HAL_ATLAS_INTRSTEN, (1<<(_vector_)) ); +#define HAL_INTERRUPT_MASK( _vector_ ) \ +{ \ + cyg_uint32 __vector = _vector_; \ + \ + if( (_vector_) < CYGNUM_HAL_INTERRUPT_HW1 ) \ + HAL_WRITE_UINT32( HAL_ATLAS_INTRSTEN, (1<<(_vector_)) ); \ + else \ + { \ + __vector -= (CYGNUM_HAL_INTERRUPT_HW1-1); \ + \ + asm volatile ( \ + "mfc0 $3,$12\n" \ + "la $2,0x00000400\n" \ + "sllv $2,$2,%0\n" \ + "nor $2,$2,$0\n" \ + "and $3,$3,$2\n" \ + "mtc0 $3,$12\n" \ + "nop; nop; nop\n" \ + : \ + : "r"(__vector) \ + : "$2", "$3" \ + ); \ + } \ +} -#define HAL_INTERRUPT_UNMASK( _vector_ ) \ - HAL_WRITE_UINT32( HAL_ATLAS_INTSETEN, (1<<(_vector_)) ); +#define HAL_INTERRUPT_UNMASK( _vector_ ) \ +{ \ + cyg_uint32 __vector = _vector_; \ + \ + if( (__vector) < CYGNUM_HAL_INTERRUPT_HW1 ) \ + { \ + HAL_WRITE_UINT32( HAL_ATLAS_INTSETEN, (1<<(__vector)) ); \ + __vector = 0; \ + } \ + else \ + __vector -= (CYGNUM_HAL_INTERRUPT_HW1-1); \ + \ + asm volatile ( \ + "mfc0 $3,$12\n" \ + "la $2,0x00000400\n" \ + "sllv $2,$2,%0\n" \ + "or $3,$3,$2\n" \ + "mtc0 $3,$12\n" \ + "nop; nop; nop\n" \ + : \ + : "r"(__vector) \ + : "$2", "$3" \ + ); \ +} -#define HAL_INTERRUPT_ACKNOWLEDGE( _vector_ ) \ -{ \ +#define HAL_INTERRUPT_ACKNOWLEDGE( _vector_ ) \ +{ \ + cyg_uint32 __vector = _vector_; \ + \ + if( __vector >= CYGNUM_HAL_INTERRUPT_HW1 ) \ + __vector -= (CYGNUM_HAL_INTERRUPT_HW1-1); \ + else \ + __vector = 0; \ + \ + asm volatile ( \ + "mfc0 $3,$13\n" \ + "la $2,0x00000400\n" \ + "sllv $2,$2,%0\n" \ + "nor $2,$2,$0\n" \ + "and $3,$3,$2\n" \ + "mtc0 $3,$13\n" \ + "nop; nop; nop\n" \ + : \ + : "r"(__vector) \ + : "$2", "$3" \ + ); \ + \ } #define HAL_INTERRUPT_CONFIGURE( _vector_, _level_, _up_ ) \
--- a/packages/hal/mips/atlas/current/src/plf_misc.c +++ b/packages/hal/mips/atlas/current/src/plf_misc.c @@ -105,8 +105,8 @@ void hal_platform_init(void) HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS1, ' '); HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS2, 'e'); HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS3, 'C'); - HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS4, 'O'); - HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS5, 'S'); + HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS4, 'o'); + HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS5, 's'); HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS6, ' '); HAL_WRITE_UINT32(HAL_DISPLAY_ASCIIPOS7, ' '); #endif
