|
@@ -1,33 +1,41 @@
|
|
|
-#include <config.h>
|
|
|
-
|
|
|
-TRAP ta 0; nop; nop; nop;
|
|
|
-
|
|
|
-/* Software trap. Treat as BAD_TRAP for the time being... */
|
|
|
-#define SOFT_TRAP TRAP(_hwerr)
|
|
|
-
|
|
|
-#define PSR_INIT 0x1FC0 /* Disable traps, set s and ps */
|
|
|
-#define WIM_INIT 2
|
|
|
-
|
|
|
-/* All traps low-level code here must end with this macro. */
|
|
|
-#define RESTORE_ALL b ret_trap_entry; clr %l6;
|
|
|
-
|
|
|
-#define WRITE_PAUSE nop;nop;nop
|
|
|
-
|
|
|
-WINDOWSIZE = (16 * 4)
|
|
|
-ARGPUSHSIZE = (6 * 4)
|
|
|
-ARGPUSH = (WINDOWSIZE + 4)
|
|
|
-MINFRAME = (WINDOWSIZE + ARGPUSHSIZE + 4)
|
|
|
-
|
|
|
-/* Number of register windows */
|
|
|
-#ifndef CONFIG_SYS_SPARC_NWINDOWS
|
|
|
-#error Must define number of SPARC register windows, default is 8
|
|
|
-#endif
|
|
|
-
|
|
|
-#define STACK_ALIGN 8
|
|
|
-#define SA(X) (((X)+(STACK_ALIGN-1)) & ~(STACK_ALIGN-1))
|
|
|
+/* This is where the SPARC/LEON3 starts
|
|
|
+ * Copyright (C) 2007,
|
|
|
+ * Daniel Hellstrom, daniel@gaisler.com
|
|
|
+ *
|
|
|
+ * See file CREDITS for list of people who contributed to this
|
|
|
+ * project.
|
|
|
+ *
|
|
|
+ * SPDX-License-Identifier: GPL-2.0+
|
|
|
+ */
|
|
|
|
|
|
- .section ".start", "ax"
|
|
|
- .globl _starttate */
|
|
|
+#include <asm-offsets.h>
|
|
|
+#include <config.h>
|
|
|
+#include <asm/asmmacro.h>
|
|
|
+#include <asm/winmacro.h>
|
|
|
+#include <asm/psr.h>
|
|
|
+#include <asm/stack.h>
|
|
|
+#include <asm/leon.h>
|
|
|
+#include <version.h>
|
|
|
+
|
|
|
+/* Entry for traps which jump to a programmer-specified trap handler. */
|
|
|
+#define TRAPR(H) \
|
|
|
+ wr %g0, 0xfe0, %psr; \
|
|
|
+ mov %g0, %tbr; \
|
|
|
+ ba (H); \
|
|
|
+ mov %g0, %wim;
|
|
|
+
|
|
|
+#define TRAP(H) \
|
|
|
+ mov %psr, %l0; \
|
|
|
+ ba (H); \
|
|
|
+ nop; nop;
|
|
|
+
|
|
|
+#define TRAPI(ilevel) \
|
|
|
+ mov ilevel, %l7; \
|
|
|
+ mov %psr, %l0; \
|
|
|
+ b _irq_entry; \
|
|
|
+ mov %wim, %l3
|
|
|
+
|
|
|
+/* Unexcpected trap will halt the processor by forcing it to error state */
|
|
|
#undef BAD_TRAP
|
|
|
#define BAD_TRAP ta 0; nop; nop; nop;
|
|
|
|