Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:22:49

0001 /*
0002  * Motorola MC9328MXL Interrupt handler
0003  *
0004  * Copyright (c) 2010 embedded brains GmbH & Co. KG
0005  *
0006  * Copyright (c) 2004 by Jay Monkman <jtm@lopingdog.com>
0007  *
0008  *  The license and distribution terms for this file may be
0009  *  found in the file LICENSE in this distribution or at
0010  *  http://www.rtems.org/license/LICENSE.
0011  */
0012 
0013 #include <rtems/score/armv4.h>
0014 
0015 #include <bsp.h>
0016 #include <bsp/irq.h>
0017 #include <bsp/irq-generic.h>
0018 
0019 #include <mc9328mxl.h>
0020 
0021 void bsp_interrupt_dispatch(void)
0022 {
0023 
0024   rtems_vector_number vector = MC9328MXL_AITC_NIVECSR >> 16;
0025 
0026   bsp_interrupt_handler_dispatch(vector);
0027 }
0028 
0029 rtems_status_code bsp_interrupt_get_attributes(
0030   rtems_vector_number         vector,
0031   rtems_interrupt_attributes *attributes
0032 )
0033 {
0034   return RTEMS_SUCCESSFUL;
0035 }
0036 
0037 rtems_status_code bsp_interrupt_is_pending(
0038   rtems_vector_number vector,
0039   bool               *pending
0040 )
0041 {
0042   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0043   bsp_interrupt_assert(pending != NULL);
0044   *pending = false;
0045   return RTEMS_UNSATISFIED;
0046 }
0047 
0048 rtems_status_code bsp_interrupt_raise(rtems_vector_number vector)
0049 {
0050   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0051   return RTEMS_UNSATISFIED;
0052 }
0053 
0054 rtems_status_code bsp_interrupt_clear(rtems_vector_number vector)
0055 {
0056   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0057   return RTEMS_UNSATISFIED;
0058 }
0059 
0060 rtems_status_code bsp_interrupt_vector_is_enabled(
0061   rtems_vector_number vector,
0062   bool               *enabled
0063 )
0064 {
0065   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0066   bsp_interrupt_assert(enabled != NULL);
0067   *enabled = false;
0068   return RTEMS_UNSATISFIED;
0069 }
0070 
0071 rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
0072 {
0073   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0074 
0075   if (vector < MC9328MXL_NUM_INTS)
0076     MC9328MXL_AITC_INTENNUM = vector;
0077 
0078   return RTEMS_SUCCESSFUL;
0079 }
0080 
0081 rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
0082 {
0083   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0084 
0085   if (vector < MC9328MXL_NUM_INTS)
0086     MC9328MXL_AITC_INTDISNUM = vector;
0087 
0088   return RTEMS_SUCCESSFUL;
0089 }
0090 
0091 rtems_status_code bsp_interrupt_set_priority(
0092   rtems_vector_number vector,
0093   uint32_t priority
0094 )
0095 {
0096   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0097   return RTEMS_UNSATISFIED;
0098 }
0099 
0100 rtems_status_code bsp_interrupt_get_priority(
0101   rtems_vector_number vector,
0102   uint32_t *priority
0103 )
0104 {
0105   bsp_interrupt_assert(bsp_interrupt_is_valid_vector(vector));
0106   bsp_interrupt_assert(priority != NULL);
0107   return RTEMS_UNSATISFIED;
0108 }
0109 
0110 void bsp_interrupt_facility_initialize(void)
0111 {
0112   _CPU_ISR_install_vector(ARM_EXCEPTION_IRQ, _ARMV4_Exception_interrupt, NULL);
0113 }