/* Template boot-code for LEON3 test benches */ #ifndef STACKSIZE #define STACKSIZE 0x00002000 #endif #include "prom.h" .seg "text" .proc 0 .align 4 .global start start: flush set 0x10e0, %g1 ! init IU mov %g1, %psr mov %g0, %wim mov %g0, %tbr mov %g0, %y nop set 0x81000f, %g1 sta %g1, [%g0] 2 mov %g0, %g2 nop nop nop nop nop or %g2, %g2, %g0 nop nop nop nop nop 2: mov %asr17, %g3 and %g3, 0x1f, %g3 mov %g0, %g4 mov %g0, %g5 mov %g0, %g6 mov %g0, %g7 1: mov %g0, %l0 mov %g0, %l1 mov %g0, %l2 mov %g0, %l3 mov %g0, %l4 mov %g0, %l5 mov %g0, %l6 mov %g0, %l7 mov %g0, %o0 mov %g0, %o1 mov %g0, %o2 mov %g0, %o3 mov %g0, %o4 mov %g0, %o5 mov %g0, %o6 mov %g0, %o7 subcc %g3, 1, %g3 bge 1b save mov 2, %g1 mov %g1, %wim set 0x10e0, %g1 ! enable traps mov %g1, %psr nop; nop; nop; mov %psr, %g1 srl %g1, 12, %g1 andcc %g1, 1, %g0 be 1f nop set _fsrxx, %g3 ld [%g3], %fsr ldd [%g3], %f0 ldd [%g3], %f2 ldd [%g3], %f4 ldd [%g3], %f6 ldd [%g3], %f8 ldd [%g3], %f10 ldd [%g3], %f12 ldd [%g3], %f14 ldd [%g3], %f16 ldd [%g3], %f18 ldd [%g3], %f20 ldd [%g3], %f22 ldd [%g3], %f24 ldd [%g3], %f26 ldd [%g3], %f28 ldd [%g3], %f30 nop nop nop nop nop faddd %f0, %f2, %f4 nop nop nop nop ba 1f nop .align 8 _fsrxx: .word 0 .word 0 1: set 0xfff00100, %g3 ld [%g3], %g4 set 0x7c1fffff, %g5 and %g5, %g4, %g4 set 0x01010000, %g5 or %g5, %g4, %g4 st %g4, [%g3] set 0x80000600, %g7 set RAMSTART, %g1 st %g1, [%g7+0x14] set 0x0257031f, %g1 st %g1, [%g7+4] set 0x00250038, %g1 st %g1, [%g7+8] set 0x00060078, %g1 st %g1, [%g7+12] set 0x0299040f, %g1 st %g1, [%g7+16] set 0x21, %g1 ! st %g1, [%g7] mov %asr17, %g3 srl %g3, 28, %g3 andcc %g3, 0x0f, %g3 bne 1f set L2MCTRLIO, %g1 set MCFG1, %g2 st %g2, [%g1] set MCFG2, %g2 st %g2, [%g1+4] set MCFG3, %g2 st %g2, [%g1+8] ! set IRQCTRL, %g1 ! set 0x0ffff, %g2 ! st %g2, [%g1+0x10] set 0xFFFFF860, %g1 ld [%g1], %g2 srl %g2, 12, %g2 set 0x01009, %g1 subcc %g1, %g2, %g0 bne 1f set ASDCFG, %g1 set DSDCFG, %g2 st %g2, [%g1] ! %g3 = cpu index 1: set STACKSIZE, %g2 mov %g0, %g1 2: subcc %g3, 0, %g0 be 3f nop add %g1, %g2, %g1 ba 2b sub %g3, 1, %g3 3: set RAMSTART+ RAMSIZE-32, %fp sub %fp, %g1, %fp sub %fp, 96, %sp set RAMSTART, %g1 ! st %g0, [%g7] jmp %g1 nop .align 32