inttable.S 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /*++
  2. Copyright (c) 2012 Minoca Corp.
  3. This file is licensed under the terms of the GNU General Public License
  4. version 3. Alternative licensing terms are available. Contact
  5. info@minocacorp.com for details. See the LICENSE file at the root of this
  6. project for complete licensing information.
  7. Module Name:
  8. inttable.s
  9. Abstract:
  10. This module implements the interrupt jump vector table for ARM processors.
  11. Author:
  12. Evan Green 11-Aug-2012
  13. Environment:
  14. Kernel
  15. --*/
  16. //
  17. // ---------------------------------------------------------------- Definitions
  18. //
  19. #include <minoca/kernel/arm.inc>
  20. //
  21. // ----------------------------------------------------------------------- Code
  22. //
  23. ASSEMBLY_FILE_HEADER
  24. //
  25. // .global allows this label to be visible to the linker.
  26. //
  27. .global ArArmInterruptTable
  28. //
  29. // This address must be aligned to a 32 byte address so that it can be set in
  30. // the VBAR register.
  31. //
  32. .balign 32
  33. ArArmInterruptTable:
  34. ldr %pc, ArArmResetVector
  35. ldr %pc, ArArmUndefinedInstructionVector
  36. ldr %pc, ArArmSoftwareInterruptVector
  37. ldr %pc, ArArmPrefetchAbortVector
  38. ldr %pc, ArArmDataAbortVector
  39. .word 0
  40. ldr %pc, ArArmIrqInterruptVector
  41. ldr %pc, ArArmFiqInterruptVector
  42. ArArmUndefinedInstructionVector:
  43. .word ArpUndefinedInstructionEntry
  44. ArArmSoftwareInterruptVector:
  45. .word ArpSoftwareInterruptEntry
  46. ArArmPrefetchAbortVector:
  47. .word ArpPrefetchAbortEntry
  48. ArArmDataAbortVector:
  49. .word ArpDataAbortEntry
  50. ArArmIrqInterruptVector:
  51. .word ArpIrqEntry
  52. ArArmFiqInterruptVector:
  53. .word ArpFiqEntry
  54. ArArmResetVector:
  55. .word ArpFiqEntry