From 702c5f5b42e975c35a94f1ae3d39a77815f36f70 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 27 Oct 1999 15:29:18 +0000 Subject: The rxgen960 BSP and i960 RPM support was submitted by Mark Bronson of RAMIX. --- .../lib/libbsp/i960/rxgen960/startup/rxgen_romld.s | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 c/src/lib/libbsp/i960/rxgen960/startup/rxgen_romld.s (limited to 'c/src/lib/libbsp/i960/rxgen960/startup/rxgen_romld.s') diff --git a/c/src/lib/libbsp/i960/rxgen960/startup/rxgen_romld.s b/c/src/lib/libbsp/i960/rxgen960/startup/rxgen_romld.s new file mode 100644 index 0000000000..5567bf8774 --- /dev/null +++ b/c/src/lib/libbsp/i960/rxgen960/startup/rxgen_romld.s @@ -0,0 +1,119 @@ +#include "asm.h" + + BEGIN_CODE + + .globl _romStart + .globl _start + .globl _romFaultStart + .globl _led_array + .text +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 +/* + # 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 -- cgit v1.2.3