File indexing completed on 2025-05-11 08:22:49
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #include <rtems/score/armv4.h>
0013
0014 #include <bsp.h>
0015 #include <bsp/irq.h>
0016 #include <bsp/irq-generic.h>
0017
0018 #include <pxa255.h>
0019
0020 void bsp_interrupt_dispatch(void)
0021 {
0022 rtems_vector_number vector = 31 - __builtin_clz(XSCALE_INT_ICIP);
0023
0024 bsp_interrupt_handler_dispatch(vector);
0025 }
0026
0027 rtems_status_code bsp_interrupt_get_attributes(
0028 rtems_vector_number vector,
0029 rtems_interrupt_attributes *attributes
0030 )
0031 {
0032 return RTEMS_SUCCESSFUL;
0033 }
0034
0035 rtems_status_code bsp_interrupt_is_pending(
0036 rtems_vector_number vector,
0037 bool *pending
0038 )
0039 {
0040 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0041 bsp_interrupt_assert(pending != NULL);
0042 *pending = false;
0043 return RTEMS_UNSATISFIED;
0044 }
0045
0046 rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
0047 {
0048 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0049 return RTEMS_UNSATISFIED;
0050 }
0051
0052 rtems_status_code bsp_interrupt_clear(rtems_vector_number vector)
0053 {
0054 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0055 return RTEMS_UNSATISFIED;
0056 }
0057
0058 rtems_status_code bsp_interrupt_vector_is_enabled(
0059 rtems_vector_number vector,
0060 bool *enabled
0061 )
0062 {
0063 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0064 bsp_interrupt_assert(enabled != NULL);
0065 *enabled = false;
0066 return RTEMS_UNSATISFIED;
0067 }
0068
0069 rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
0070 {
0071 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0072 XSCALE_INT_ICMR |= 1 << vector;
0073 return RTEMS_SUCCESSFUL;
0074 }
0075
0076 rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
0077 {
0078 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0079 XSCALE_INT_ICMR &= ~(1 << vector);
0080 return RTEMS_SUCCESSFUL;
0081 }
0082
0083 rtems_status_code bsp_interrupt_set_priority(
0084 rtems_vector_number vector,
0085 uint32_t priority
0086 )
0087 {
0088 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0089 return RTEMS_UNSATISFIED;
0090 }
0091
0092 rtems_status_code bsp_interrupt_get_priority(
0093 rtems_vector_number vector,
0094 uint32_t *priority
0095 )
0096 {
0097 bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0098 bsp_interrupt_assert(priority != NULL);
0099 return RTEMS_UNSATISFIED;
0100 }
0101
0102 void bsp_interrupt_facility_initialize(void)
0103 {
0104
0105 XSCALE_INT_ICMR = 0x0;
0106
0107
0108 XSCALE_INT_ICLR = 0x0;
0109
0110
0111 _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
0112 }