Changes between Version 12 and Version 13 of Component/Vci Icu
- Timestamp:
- Jan 4, 2008, 12:39:35 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Component/Vci Icu
v12 v13 57 57 static const volatile void* icu_address = 0xc0000000; 58 58 59 static icu_test( const size_t icu_no)59 static icu_test() 60 60 { 61 61 // Getting / setting interrupt mask 62 uint32_t current_interrupt_mask = soclib_io_get( icu_address, ICU_ SPAN*icu_no + ICU_MASK );62 uint32_t current_interrupt_mask = soclib_io_get( icu_address, ICU_MASK ); 63 63 64 64 // Enabling IRQ #5 65 soclib_io_set( icu_address, ICU_ SPAN*icu_no + ICU_MASK_SET, 1<<5 );65 soclib_io_set( icu_address, ICU_MASK_SET, 1<<5 ); 66 66 // Disabling IRQ #0 67 soclib_io_set( icu_address, ICU_ SPAN*icu_no + ICU_MASK_CLEAR, 1<<0 );67 soclib_io_set( icu_address, ICU_MASK_CLEAR, 1<<0 ); 68 68 69 69 // When interrupt is raised, you may do: 70 int irq_to_serve = soclib_io_get( icu_address, ICU_ SPAN*icu_no + ICU_IT_VECTOR );70 int irq_to_serve = soclib_io_get( icu_address, ICU_IT_VECTOR ); 71 71 // This should be equivalent to (see man 3 ffs) 72 int irq_to_serve = ffs( soclib_io_get( icu_address, ICU_ SPAN*icu_no + ICU_IT_VECTOR )73 & soclib_io_get( icu_address, ICU_ SPAN*icu_no + ICU_MASK ) );72 int irq_to_serve = ffs( soclib_io_get( icu_address, ICU_IT_VECTOR ) 73 & soclib_io_get( icu_address, ICU_MASK ) ); 74 74 } 75 75 }}}