This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
[patch] Add a dummy interrupt handler to nios2 crt0.s
- From: Sandra Loosemore <sandra at codesourcery dot com>
- To: Newlib <newlib at sourceware dot org>
- Date: Tue, 2 Apr 2019 14:01:52 -0600
- Subject: [patch] Add a dummy interrupt handler to nios2 crt0.s
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
commit 56b4f94c123976e9de0e2b324f790a3ae3ec460f
Author: Sandra Loosemore <sandra@codesourcery.com>
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. */