2 * PROJECT: ReactOS Kernel
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: ntoskrnl/ke/arm/trap.s
5 * PURPOSE: Support for exceptions and interrupts on ARM machines
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 .title "ARM Trap Dispatching and Handling"
10 #include "ntoskrnl/include/internal/arm/kxarm.h"
11 .include "ntoskrnl/include/internal/arm/ksarm.h"
13 .global KiArmVectorTable
16 ldr pc, _KiUndefinedInstructionJump // Undefined Instruction
17 ldr pc, _KiSoftwareInterruptJump // Software Interrupt
18 ldr pc, _KiPrefetchAbortJump // Prefetch Abort
19 ldr pc, _KiDataAbortJump // Data Abort
20 ldr pc, _KiReservedJump // Reserved
21 ldr pc, _KiInterruptJump // Interrupt
22 ldr pc, _KiFastInterruptJump // Fast Interrupt
24 _KiUndefinedInstructionJump: .word KiUndefinedInstructionException
25 _KiSoftwareInterruptJump: .word KiSoftwareInterruptException
26 _KiPrefetchAbortJump: .word KiPrefetchAbortException
27 _KiDataAbortJump: .word KiDataAbortException
28 _KiReservedJump: .word KiReservedException
29 _KiInterruptJump: .word KiInterruptException
30 _KiFastInterruptJump: .word KiFastInterruptException
33 NESTED_ENTRY KiUndefinedInstructionException
34 PROLOG_END KiUndefinedInstructionException
41 ENTRY_END KiUndefinedInstructionException
43 NESTED_ENTRY KiSoftwareInterruptException
44 PROLOG_END KiSoftwareInterruptException
56 ldr pc, =KiSoftwareInterruptHandler
62 TRAP_EPILOG 1 // FromSystemCall
64 ENTRY_END KiSoftwareInterruptException
66 NESTED_ENTRY KiPrefetchAbortException
67 PROLOG_END KiPrefetchAbortException
74 ENTRY_END KiPrefetchAbortException
76 NESTED_ENTRY KiDataAbortException
77 PROLOG_END KiDataAbortException
82 TRAP_PROLOG 1 // FromAbort
89 ldr pc, =KiDataAbortHandler
95 TRAP_EPILOG 0 // NotFromSystemCall
97 ENTRY_END KiDataAbortException
99 NESTED_ENTRY KiInterruptException
100 PROLOG_END KiInterruptException
105 TRAP_PROLOG 0 // NotFromAbort
108 // Call the C handler
113 ldr pc, =KiInterruptHandler
119 TRAP_EPILOG 0 // NotFromSystemCall
121 ENTRY_END KiInterruptException
123 NESTED_ENTRY KiFastInterruptException
124 PROLOG_END KiFastInterruptException
131 ENTRY_END KiFastInterruptException
134 NESTED_ENTRY KiReservedException
135 PROLOG_END KiReservedException
142 ENTRY_END KiReservedException