summaryrefslogtreecommitdiffstats
path: root/bsps/sparc64/usiii/start/bspinit.S
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/sparc64/usiii/start/bspinit.S')
-rw-r--r--bsps/sparc64/usiii/start/bspinit.S53
1 files changed, 53 insertions, 0 deletions
diff --git a/bsps/sparc64/usiii/start/bspinit.S b/bsps/sparc64/usiii/start/bspinit.S
new file mode 100644
index 0000000000..8da1d95eab
--- /dev/null
+++ b/bsps/sparc64/usiii/start/bspinit.S
@@ -0,0 +1,53 @@
+/*
+ * BSP specific initialization for Sparc64 RTEMS -- sun4u BSP
+ *
+ * This code defines start code specific to the sun4u BSP
+ */
+
+/*
+ * COPYRIGHT (c) 2010 Gedare Bloom.
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <rtems/asm.h>
+#include <rtems/score/cpu.h>
+
+#include <traptable.h>
+
+#define LSU_CR_IM_MASK (0x0004) /* bit 2 */
+#define LSU_CR_DM_MASK (0x0008) /* bit 3 */
+
+#define STACK_WINDOW_SAVE_AREA_SIZE (16*8)
+
+.register %g2, #scratch
+.register %g3, #scratch
+
+.section .text
+
+PUBLIC(_BSP_init)
+.global _BSP_init
+ SYM(_BSP_init):
+ save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp
+
+ ! copy the tba
+ sethi %hi(real_trap_table), %o0
+ rdpr %tba, %o2
+ stx %o2, [%o0 + %lo(real_trap_table)]
+
+! /* copy firmware trap table so that RTEMS can install ISR handlers */
+! setx SYM(trap_table), %l0, %o0
+! rdpr %tba, %o1
+! set TABLE_SIZE, %o2
+! call memcpy
+! nop
+
+ mov %g0, %o0
+ call _take_mmu
+ nop
+
+ ret
+ restore
+