[patch] Add a dummy interrupt handler to nios2 crt0.s
Sandra Loosemore <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
The attached patch addresses another request from the QEMU maintainers in my quest to get the nios2 bare-metal support patches committed there: the corresponding libgloss BSP needs to provide an interrupt handler so the QEMU emulation can point at it. http://lists.nongnu.org/archive/html/qemu-devel/2019-03/msg07063.html I added a dummy routine and placed it immediately after the 32-byte reset vector. This matches where the real hardware (a 3c120 board) we've also used for testing expects to find the interrupt handler. The dummy handler busy-waits in a loop, which is not terribly useful by itself, but you could set a breakpoint on it in the debugger, at least. OK? -Sandra
nios2-crt0.patch
(text/x-patch, 1.3 KB)
commit 56b4f94c123976e9de0e2b324f790a3ae3ec460f Author: Sandra Loosemore <[email protected]> Date: Tue Apr 2 12:33:35 2019 -0700 Add a dummy interrupt handler to nios2 crt0.s. The location of the handler at offset 0x20 from the start of memory, immediately after the 32-byte reset vector, matches the expectations of real hardware (e.g., a 3c120 board). diff --git a/libgloss/nios2/crt0.S b/libgloss/nios2/crt0.S index 77eacb3..c4dd4c6 100644 --- a/libgloss/nios2/crt0.S +++ b/libgloss/nios2/crt0.S @@ -1,6 +1,6 @@ /* crt0.S -- startup code for Nios II QEMU generic-nommu board emulation. - Copyright (c) 2018 Mentor Graphics + Copyright (c) 2018-2019 Mentor Graphics The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided @@ -81,6 +81,18 @@ __reset: .size __reset, . - __reset +/* Provide a stub interrupt handler that waits in a busy loop. + The alignment puts it at offset 0x20 from the base of RAM. */ + + .align 5 + + .globl __interrupt_handler + .type __interrupt_handler, @function +__interrupt_handler: +0: + br 0b + + .size __interrupt_handler, . - __interrupt_handler /* __start is the ELF entry point. */