Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:41

0001 /**
0002  * @file
0003  * @ingroup i386_irq
0004  * @brief Interrupt handlers
0005  */
0006 
0007 /* irq.h
0008  *
0009  *  This include file describe the data structure and the functions implemented
0010  *  by rtems to write interrupt handlers.
0011  *
0012  *  CopyRight (C) 1998 valette@crf.canon.fr
0013  *
0014  *  This code is heavilly inspired by the public specification of STREAM V2
0015  *  that can be found at :
0016  *
0017  *      <http://www.chorus.com/Documentation/index.html> by following
0018  *  the STREAM API Specification Document link.
0019  *
0020  *  The license and distribution terms for this file may be
0021  *  found in the file LICENSE in this distribution or at
0022  *  http://www.rtems.org/license/LICENSE.
0023  */
0024 
0025 /**
0026  * @defgroup i386_irq Interrupt handlers
0027  * @ingroup RTEMSBSPsI386
0028  * @brief Data structure and the functions to write interrupt handlers
0029  * @{
0030  */
0031 
0032 #ifndef _IRQ_H_
0033 #define _IRQ_H_
0034 
0035 #ifdef __cplusplus
0036 extern "C" {
0037 #endif
0038 
0039 /** @brief
0040  * Include some preprocessor value also used by assember code
0041  */
0042 
0043 #include <bsp/irq_asm.h>
0044 #include <rtems.h>
0045 #ifndef BSP_SHARED_HANDLER_SUPPORT
0046 #define BSP_SHARED_HANDLER_SUPPORT      1
0047 #endif
0048 #include <rtems/irq.h>
0049 #include <rtems/irq-extension.h>
0050 
0051 /*-------------------------------------------------------------------------+
0052 | Constants
0053 +--------------------------------------------------------------------------*/
0054 
0055 /** @brief Base vector for our IRQ handlers. */
0056 #define BSP_IRQ_VECTOR_BASE     BSP_ASM_IRQ_VECTOR_BASE
0057 #define BSP_IRQ_LINES_NUMBER        16
0058 #define BSP_IRQ_MAX_ON_i8259A       (BSP_IRQ_LINES_NUMBER - 1)
0059 
0060 /*
0061  * Define the number of valid vectors. This is different to the number of IRQ
0062  * signals supported. Use this value to allocation vector data or range check.
0063  */
0064 #define BSP_IRQ_VECTOR_NUMBER        17
0065 #define BSP_IRQ_VECTOR_LOWEST_OFFSET 0
0066 #define BSP_IRQ_VECTOR_MAX_OFFSET    (BSP_IRQ_VECTOR_NUMBER - 1)
0067 
0068 /** @brief
0069  * Interrupt offset in comparison to BSP_ASM_IRQ_VECTOR_BASE
0070  * NB : 1) Interrupt vector number in IDT = offset + BSP_ASM_IRQ_VECTOR_BASE
0071  *      2) The same name should be defined on all architecture
0072  *         so that handler connection can be unchanged.
0073  */
0074 #define BSP_PERIODIC_TIMER      0 /* fixed on all builds of PC */
0075 #define BSP_KEYBOARD            1 /* fixed on all builds of PC */
0076 #define BSP_UART_COM2_IRQ   3 /* fixed for ISA bus */
0077 #define BSP_UART_COM1_IRQ   4 /* fixed for ISA bus */
0078 #define BSP_UART_COM3_IRQ   5
0079 #define BSP_UART_COM4_IRQ   6
0080 #define BSP_RT_TIMER1           8
0081 #define BSP_RT_TIMER3       10
0082 #define BSP_SMP_IPI         16 /* not part of the ATPIC */
0083 
0084 #define BSP_INTERRUPT_VECTOR_COUNT BSP_IRQ_VECTOR_NUMBER
0085 
0086 /** @brief
0087  * Type definition for RTEMS managed interrupts
0088  */
0089 typedef unsigned short rtems_i8259_masks;
0090 
0091 /** @} */
0092 
0093 #ifdef __cplusplus
0094 }
0095 #endif
0096 
0097 #endif /* _IRQ_H_ */