summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S')
-rw-r--r--c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S169
1 files changed, 169 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S b/c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S
new file mode 100644
index 0000000000..d6436f4b7b
--- /dev/null
+++ b/c/src/lib/libbsp/i960/rxgen960/start/rxgen_romld.S
@@ -0,0 +1,169 @@
+/*
+ * $Id$
+ */
+
+#include "asm.h"
+
+ BEGIN_CODE
+
+ .globl _romStart
+ .globl start
+ .globl _start
+ .globl _romFaultStart
+ .globl _led_array
+ .text
+start: /* JRS */
+_start: /* JRS */
+SYM(romStart ):
+SYM(_romStart ):
+ # This line is to make compiler happy.
+ mov 0, g14
+ ldconst 0x120f,r10 # BIST register
+/*
+ Setup code for in memory loaded image
+*/
+/*
+ # Interrupt stack is used by default.
+ # Copy all code (except Fault Table and Fault Handler)
+ # from EPROM into DRAM.
+*/
+ ldconst 0x120f,r10 //# BIST register
+ ldconst 0x2,r3
+ stob r3,0(r10) //# 2->LED
+/*
+ # Zero all uninitialized data
+*/
+ callx _zeroBss
+ ldconst 0x120f,r10 //# BIST register
+ ldconst 0x3,r3
+ stob r3,0(r10) //# 3->LED
+/*
+ # And reinitialize processor.
+ # _start is a few lines below.
+ # _prcb is RAM-based struct PRCB.
+*/
+ ldconst 0x300, r4
+ ldconst _pmc_start, r5
+ ldconst _ram_prcb, r6
+ sysctl r4, r5, r6
+/*
+ # This point will never be reached.
+*/
+
+SYM(_pmc_start) :
+SYM(pmc_start) :
+ ldconst 0x120f,r10 # BIST register
+ ldconst 0x4,r3
+ stob r3,0(r10) //# 4->LED
+ mov 0, g14
+/*
+ # To get ready to invoke procedures.
+ # I'll use supervisor stack.
+*/
+
+ ldconst _svrStackPtr, fp
+ lda 16*4(fp), sp
+ ldconst 0x5,r3
+ stob r3,0(r10) //# 5->LED
+
+ ldconst 0x1F0000, r4
+ ldconst 0x1F2000, r3
+ ldconst 0, r5
+ modpc r4, r3, r5
+
+ ldconst 7,r3
+ stob r3,0(r10) //# 7->LED
+
+ callx _rx_boot_card
+/* # if _romMain ever returns ... */
+ b _romExit
+
+SYM(romFaultStart) :
+SYM(_romFaultStart) :
+
+ mov 0, g14
+
+ /* ldconst 0, sf0 XXX JRS */
+/*
+ # To get ready to invoke procedures.
+ # I'll use supervisor stack.
+ # _svrStackPtr is defined directly in rom.ld.
+*/
+ ldconst _svrStackPtr, fp
+ lda 16*4(fp), sp
+/*
+ # Set processor priority to zero.
+*/
+ ldconst 0x1F0000, r4
+ ldconst 0, r5
+ modpc r4, r4, r5
+// # Now to real code
+// Fix this up callx _romFaultMain
+ callx _rx_boot_card
+// # if _romMain ever returns ...
+ b _romExit
+
+_romExit :
+// # if _romMain ever returns ...
+// fmark
+ b _romExit
+
+
+
+SYM(led_array):
+ .byte 99
+ .byte 1
+ .byte 2
+ .byte 3
+ .byte 4
+ .byte 5
+ .byte 6
+ .byte 7
+ .byte 8
+ .byte 9
+ .byte 0xa
+ .byte 0xb
+ .byte 0xc
+
+
+/* just to compile and link application XXX JOEL */
+ .globl _faultStart
+ .globl _faultEnd
+ .globl _faultCheckSum
+ .globl _faultBuffer
+ .globl _svrStackPtr
+ .globl _console_pmr_getc
+ .globl _console_pmr_kbhit
+ .globl _console_pmr_init
+ .globl _console_pmr_putc
+ .globl _DBGConsole_make_sync
+ .globl _codeRamStart
+ .globl _codeRomStart
+ .globl _codeRamEnd
+ .globl _codeRomEnd
+ .globl _bssStart
+ .globl _bssEnd
+ .globl _bssStart_1
+ .globl _bssEnd_1
+ .globl _intStackPtr
+
+_faultStart:
+_faultEnd:
+_faultCheckSum:
+_faultBuffer:
+_svrStackPtr:
+_console_pmr_getc:
+_console_pmr_kbhit:
+_console_pmr_init:
+_console_pmr_putc:
+_DBGConsole_make_sync:
+_codeRamStart:
+_codeRomStart:
+_codeRamEnd:
+_codeRomEnd:
+_bssStart:
+_bssEnd:
+_bssStart_1:
+_bssEnd_1:
+_intStackPtr:
+