1 | /* |
---|
2 | * Copyright (c) 2012, 2018 embedded brains GmbH. All rights reserved. |
---|
3 | * |
---|
4 | * The license and distribution terms for this file may be |
---|
5 | * found in the file LICENSE in this distribution or at |
---|
6 | * http://www.rtems.org/license/LICENSE. |
---|
7 | */ |
---|
8 | |
---|
9 | #ifndef LIBBSP_SHARED_BSP_FATAL_H |
---|
10 | #define LIBBSP_SHARED_BSP_FATAL_H |
---|
11 | |
---|
12 | #include <rtems.h> |
---|
13 | |
---|
14 | #ifdef __cplusplus |
---|
15 | extern "C" { |
---|
16 | #endif /* __cplusplus */ |
---|
17 | |
---|
18 | #define BSP_FATAL_CODE_BLOCK(idx) ((unsigned long) (idx) * 256UL) |
---|
19 | |
---|
20 | /** |
---|
21 | * @brief BSP fatal error codes. |
---|
22 | */ |
---|
23 | typedef enum { |
---|
24 | /* Generic BSP fatal codes */ |
---|
25 | BSP_FATAL_INTERRUPT_INITIALIZATION = BSP_FATAL_CODE_BLOCK(0), |
---|
26 | BSP_FATAL_SPURIOUS_INTERRUPT, |
---|
27 | BSP_FATAL_CONSOLE_MULTI_INIT, |
---|
28 | BSP_FATAL_CONSOLE_NO_MEMORY_0, |
---|
29 | BSP_FATAL_CONSOLE_NO_MEMORY_1, |
---|
30 | BSP_FATAL_CONSOLE_NO_MEMORY_2, |
---|
31 | BSP_FATAL_CONSOLE_NO_MEMORY_3, |
---|
32 | BSP_FATAL_CONSOLE_REGISTER_DEV_0, |
---|
33 | BSP_FATAL_CONSOLE_REGISTER_DEV_1, |
---|
34 | BSP_FATAL_CONSOLE_NO_DEV, |
---|
35 | BSP_FATAL_CONSOLE_INSTALL_0, |
---|
36 | BSP_FATAL_CONSOLE_INSTALL_1, |
---|
37 | BSP_FATAL_CONSOLE_REGISTER_DEV_2, |
---|
38 | |
---|
39 | /* ARM fatal codes */ |
---|
40 | BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(1), |
---|
41 | BSP_ARM_A9MPCORE_FATAL_CLOCK_IRQ_REMOVE, |
---|
42 | BSP_ARM_PL111_FATAL_REGISTER_DEV, |
---|
43 | BSP_ARM_PL111_FATAL_SEM_CREATE, |
---|
44 | BSP_ARM_PL111_FATAL_SEM_RELEASE, |
---|
45 | BSP_ARM_A9MPCORE_FATAL_CLOCK_SMP_INIT, |
---|
46 | BSP_ARM_ARMV7M_CPU_COUNTER_INIT, |
---|
47 | BSP_ARM_FATAL_GENERIC_TIMER_CLOCK_IRQ_INSTALL, |
---|
48 | |
---|
49 | /* LEON3 fatal codes */ |
---|
50 | LEON3_FATAL_NO_IRQMP_CONTROLLER = BSP_FATAL_CODE_BLOCK(2), |
---|
51 | LEON3_FATAL_CONSOLE_REGISTER_DEV, |
---|
52 | LEON3_FATAL_CLOCK_INITIALIZATION, |
---|
53 | LEON3_FATAL_INVALID_CACHE_CONFIG_BOOT_PROCESSOR, |
---|
54 | LEON3_FATAL_INVALID_CACHE_CONFIG_SECONDARY_PROCESSOR, |
---|
55 | LEON3_FATAL_CLOCK_NO_IRQMP_TIMESTAMP_SUPPORT, |
---|
56 | |
---|
57 | /* LPC24XX fatal codes */ |
---|
58 | LPC24XX_FATAL_PL111_SET_UP = BSP_FATAL_CODE_BLOCK(3), |
---|
59 | LPC24XX_FATAL_PL111_PINS_SET_UP, |
---|
60 | LPC24XX_FATAL_PL111_PINS_TEAR_DOWN, |
---|
61 | LPC24XX_FATAL_PL111_TEAR_DOWN, |
---|
62 | |
---|
63 | /* MPC5200 fatal codes */ |
---|
64 | MPC5200_FATAL_PCF8563_INVALID_YEAR = BSP_FATAL_CODE_BLOCK(4), |
---|
65 | MPC5200_FATAL_SLICETIMER_0_IRQ_INSTALL, |
---|
66 | MPC5200_FATAL_SLICETIMER_1_IRQ_INSTALL, |
---|
67 | MPC5200_FATAL_TM27_IRQ_INSTALL, |
---|
68 | MPC5200_FATAL_MSCAN_A_INIT, |
---|
69 | MPC5200_FATAL_MSCAN_B_INIT, |
---|
70 | MPC5200_FATAL_MSCAN_A_SET_MODE, |
---|
71 | MPC5200_FATAL_MSCAN_B_SET_MODE, |
---|
72 | MPC5200_FATAL_ATA_DISK_IO_INIT, |
---|
73 | MPC5200_FATAL_ATA_DISK_CREATE, |
---|
74 | MPC5200_FATAL_ATA_DMA_SINGLE_IRQ_INSTALL, |
---|
75 | MPC5200_FATAL_ATA_LOCK_CREATE, |
---|
76 | MPC5200_FATAL_ATA_LOCK_DESTROY, |
---|
77 | |
---|
78 | /* MPC55XX fatal codes */ |
---|
79 | MPC55XX_FATAL_FMPLL_LOCK = BSP_FATAL_CODE_BLOCK(5), |
---|
80 | MPC55XX_FATAL_CLOCK_EMIOS_IRQ_INSTALL, |
---|
81 | MPC55XX_FATAL_CLOCK_EMIOS_PRESCALER, |
---|
82 | MPC55XX_FATAL_CLOCK_EMIOS_INTERVAL, |
---|
83 | MPC55XX_FATAL_CLOCK_PIT_IRQ_INSTALL, |
---|
84 | MPC55XX_FATAL_CONSOLE_GENERIC_COUNT, |
---|
85 | MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER, |
---|
86 | MPC55XX_FATAL_CONSOLE_GENERIC_REGISTER_CONSOLE, |
---|
87 | MPC55XX_FATAL_CONSOLE_ESCI_BAUD, |
---|
88 | MPC55XX_FATAL_CONSOLE_ESCI_ATTRIBUTES, |
---|
89 | MPC55XX_FATAL_CONSOLE_ESCI_IRQ_INSTALL, |
---|
90 | MPC55XX_FATAL_CONSOLE_LINFLEX_BAUD, |
---|
91 | MPC55XX_FATAL_CONSOLE_LINFLEX_ATTRIBUTES, |
---|
92 | MPC55XX_FATAL_CONSOLE_LINFLEX_RX_IRQ_INSTALL, |
---|
93 | MPC55XX_FATAL_CONSOLE_LINFLEX_TX_IRQ_INSTALL, |
---|
94 | MPC55XX_FATAL_CONSOLE_LINFLEX_ERR_IRQ_INSTALL, |
---|
95 | MPC55XX_FATAL_CONSOLE_LINFLEX_RX_IRQ_REMOVE, |
---|
96 | MPC55XX_FATAL_CONSOLE_LINFLEX_TX_IRQ_REMOVE, |
---|
97 | MPC55XX_FATAL_CONSOLE_LINFLEX_ERR_IRQ_REMOVE, |
---|
98 | MPC55XX_FATAL_EDMA_IRQ_INSTALL, |
---|
99 | MPC55XX_FATAL_EDMA_IRQ_REMOVE, |
---|
100 | |
---|
101 | /* MRM332 fatal codes */ |
---|
102 | MRM332_FATAL_SPURIOUS_INTERRUPT = BSP_FATAL_CODE_BLOCK(6), |
---|
103 | |
---|
104 | /* PowerPC fatal codes */ |
---|
105 | PPC_FATAL_EXCEPTION_INITIALIZATION = BSP_FATAL_CODE_BLOCK(7), |
---|
106 | |
---|
107 | /* Libchip fatal codes */ |
---|
108 | DWMAC_FATAL_TOO_MANY_RBUFS_CONFIGURED = BSP_FATAL_CODE_BLOCK(8), |
---|
109 | |
---|
110 | /* ARM fatal codes */ |
---|
111 | ARM_FATAL_L2C_310_UNEXPECTED_ID = BSP_FATAL_CODE_BLOCK(9), |
---|
112 | ARM_FATAL_L2C_310_UNEXPECTED_NUM_WAYS, |
---|
113 | ARM_FATAL_L2C_310_EXCLUSIVE_CONFIG, |
---|
114 | |
---|
115 | /* QorIQ fatal codes */ |
---|
116 | QORIQ_FATAL_SMP_IPI_HANDLER_INSTALL = BSP_FATAL_CODE_BLOCK(10), |
---|
117 | QORIQ_FATAL_FDT_NO_BUS_FREQUENCY, |
---|
118 | QORIQ_FATAL_FDT_NO_CLOCK_FREQUENCY, |
---|
119 | QORIQ_FATAL_FDT_NO_TIMEBASE_FREQUENCY, |
---|
120 | QORIQ_FATAL_RESTART_FAILED, |
---|
121 | QORIQ_FATAL_RESTART_INSTALL_INTERRUPT, |
---|
122 | QORIQ_FATAL_RESTART_INTERRUPT_FAILED, |
---|
123 | |
---|
124 | /* ATSAM fatal codes */ |
---|
125 | ATSAM_FATAL_XDMA_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(11), |
---|
126 | ATSAM_FATAL_PIO_IRQ_A, |
---|
127 | ATSAM_FATAL_PIO_IRQ_B, |
---|
128 | ATSAM_FATAL_PIO_IRQ_C, |
---|
129 | ATSAM_FATAL_PIO_IRQ_D, |
---|
130 | ATSAM_FATAL_PIO_IRQ_E, |
---|
131 | ATSAM_FATAL_PIO_CONFIGURE_IT, |
---|
132 | |
---|
133 | /* i.MX fatal codes */ |
---|
134 | IMX_FATAL_GENERIC_TIMER_FREQUENCY = BSP_FATAL_CODE_BLOCK(12), |
---|
135 | IMX_FATAL_GPIO_UNEXPECTED_FDT, |
---|
136 | |
---|
137 | /* RISC-V fatal codes */ |
---|
138 | RISCV_FATAL_NO_TIMEBASE_FREQUENCY_IN_DEVICE_TREE = BSP_FATAL_CODE_BLOCK(13), |
---|
139 | RISCV_FATAL_NO_NS16550_REG_IN_DEVICE_TREE, |
---|
140 | RISCV_FATAL_NO_NS16550_CLOCK_FREQUENCY_IN_DEVICE_TREE, |
---|
141 | RISCV_FATAL_UNEXPECTED_INTERRUPT_EXCEPTION, |
---|
142 | RISCV_FATAL_CLOCK_IRQ_INSTALL, |
---|
143 | RISCV_FATAL_NO_CLINT_REG_IN_DEVICE_TREE, |
---|
144 | RISCV_FATAL_INVALID_HART_REG_IN_DEVICE_TREE, |
---|
145 | RISCV_FATAL_INVALID_CLINT_IRQS_EXTENDED_IN_DEVICE_TREE, |
---|
146 | RISCV_FATAL_NO_PLIC_REG_IN_DEVICE_TREE, |
---|
147 | RISCV_FATAL_INVALID_PLIC_NDEV_IN_DEVICE_TREE, |
---|
148 | RISCV_FATAL_TOO_LARGE_PLIC_NDEV_IN_DEVICE_TREE, |
---|
149 | RISCV_FATAL_INVALID_INTERRUPT_AFFINITY, |
---|
150 | RISCV_FATAL_NO_NS16550_INTERRUPTS_IN_DEVICE_TREE, |
---|
151 | RISCV_FATAL_NO_TLCLOCK_FREQUENCY_IN_DEVICE_TREE, |
---|
152 | RISCV_FATAL_CLOCK_SMP_INIT, |
---|
153 | |
---|
154 | /* GRLIB fatal codes */ |
---|
155 | GRLIB_FATAL_CLOCK_NO_IRQMP_TIMESTAMP_SUPPORT = BSP_FATAL_CODE_BLOCK(14), |
---|
156 | |
---|
157 | /* i.MXRT fatal codes */ |
---|
158 | IMXRT_FATAL_NO_CONSOLE = BSP_FATAL_CODE_BLOCK(15), |
---|
159 | IMXRT_FATAL_LPUART_INVALID_FDT, |
---|
160 | IMXRT_FATAL_LPUART_ALLOC_FAILED, |
---|
161 | IMXRT_FATAL_LPUART_INSTALL_FAILED, |
---|
162 | IMXRT_FATAL_LPSPI_INVALID_FDT, |
---|
163 | IMXRT_FATAL_LPSPI_ALLOC_FAILED, |
---|
164 | IMXRT_FATAL_LPSPI_HW_INIT_FAILED, |
---|
165 | IMXRT_FATAL_LPSPI_REGISTER_FAILED, |
---|
166 | IMXRT_FATAL_LPI2C_INVALID_FDT, |
---|
167 | IMXRT_FATAL_LPI2C_ALLOC_FAILED, |
---|
168 | IMXRT_FATAL_LPI2C_HW_INIT_FAILED, |
---|
169 | IMXRT_FATAL_LPI2C_REGISTER_FAILED, |
---|
170 | IMXRT_FATAL_LPI2C_UNSUPPORTED_HARDWARE, |
---|
171 | |
---|
172 | /* MicroBlaze fatal codes */ |
---|
173 | MICROBLAZE_FATAL_CLOCK_IRQ_INSTALL = BSP_FATAL_CODE_BLOCK(16), |
---|
174 | } bsp_fatal_code; |
---|
175 | |
---|
176 | RTEMS_NO_RETURN static inline void |
---|
177 | bsp_fatal( bsp_fatal_code code ) |
---|
178 | { |
---|
179 | rtems_fatal( RTEMS_FATAL_SOURCE_BSP, (rtems_fatal_code) code ); |
---|
180 | } |
---|
181 | |
---|
182 | #ifdef __cplusplus |
---|
183 | } |
---|
184 | #endif /* __cplusplus */ |
---|
185 | |
---|
186 | #endif /* LIBBSP_SHARED_BSP_FATAL_H */ |
---|