diff options
Diffstat (limited to 'libgloss/hp74x/crt0.s')
-rw-r--r-- | libgloss/hp74x/crt0.s | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/libgloss/hp74x/crt0.s b/libgloss/hp74x/crt0.s deleted file mode 100644 index b5986e6..0000000 --- a/libgloss/hp74x/crt0.s +++ /dev/null @@ -1,177 +0,0 @@ -/* - * crt0.S -- startup file for hppa. - * rob@cygnus.com (Rob Savoye) - */ - .VERSION "0.2" - .COPYRIGHT "crt0.S for hppa" - -;sp .equ %r30 ; stack pointer -;dp .equ %r27 ; global data pointer -;arg0 .equ %r26 ; argument -;arg1 .equ %r25 ; argument or high part of double argument -;arg2 .equ %r24 ; argument -;arg3 .equ %r23 ; argument or high part of double argument - -#define IMM(a,b) ldil L%a,b ! ldo R%a(b),b -#define imm(i,t) ldil LS%i,t ! addi RS%i,t,t - - .DATA - -/**** - * FIXME: these are just a gross hack so this will assemble - ****/ -_bss_start .WORD -_bss_end .WORD -_foobar - .STRINGZ "Foo Bar...\r\n" - -;;_SYSTEM_ID .WORD -;; .EXPORT _SYSTEM_ID ; FIXME this is only so it'll - ; link - -/* - * Set up the standard spaces (sections) These definitions come - * from /lib/pcc_prefix.s. - */ - .space $TEXT$,0 - - .SUBSPA $BOOT$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=4 - .IMPORT _start - -/* - * stuff we need that's defined elsewhere. - */ - .IMPORT main, CODE - .IMPORT _bss_start, DATA - .IMPORT _bss_end, DATA - .IMPORT environ, DATA - -/* - * start -- set things up so the application will run. - * - */ - .PROC - .CALLINFO SAVE_SP, FRAME=48 - .EXPORT $START$,ENTRY -$START$ - - /* FIXME: this writes to page zero */ - ;; setup the %30 (stack pointer) with some memory - ldil L%_stack+48,%r30 - ldo R%_stack+48(%r30),%r30 ; should be %r30 (sp) but then - ; we'd kill our test program :-) - ;; we need to set %r27 (global data pointer) here too - ldil L%$global$,%r27 - ldo R%$global$(%r27),%r27 ; same problem as above - -/* - * zerobss -- zero out the bss section - */ - ; load the start of bss - ldil L%_bss_start,%r4 - ldo R%_bss_start(%r4),%r4 - - ; load the end of bss - ldil L%_bss_end,%r5 - ldo R%_bss_end(%r5),%r5 - - -bssloop - addi -1,%r5,%r5 ; decrement _bss_end - stb %r0,0(0,%r5) ; we do this by bytes for now even - ; though it's slower, it's safer - combf,= %r4,%r5, bssloop - nop - - ldi 1,%ret0 - -/* - * Call the main routine from the application to get it going. - * main (argc, argv, environ) - * We pass argv as a pointer to NULL. - */ - - bl main,%r2 - nop - - .PROCEND -/* - * _exit -- Exit from the application. Normally we cause a user trap - * to return to the ROM monitor for another run, but with - * this monitor we can't. Still, "C" wants this symbol, it - * should be here. Jumping to 0xF0000004 jumps back into the - * firmware, while writing a 5 to 0xFFFE0030 causes a reset. - */ - .EXPORT _exit, ENTRY -_exit - .PROC - .CALLINFO - .ENTRY -;; ldil L%0xf0000004,%r1 -;; bl %r1, %r2 - - ldil L'4026531844,%r19 - ldo R'4026531844(%r19),%r19 - blr %r19, %r2 - nop - - ;; This just causes a breakpoint exception -;; break 0x0e,0xa5a -;; bv,n (%rp) - nop - .EXIT - .PROCEND - - .subspa $UNWIND_START$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=56 - .export $UNWIND_START -$UNWIND_START - .subspa $UNWIND$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=64 - .subspa $UNWIND_END$,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=72 - .export $UNWIND_END -$UNWIND_END - .subspa $RECOVER_START$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=73 - .export $RECOVER_START -$RECOVER_START - .subspa $RECOVER$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=80 - .subspa $RECOVER_END$,QUAD=0,ALIGN=4,ACCESS=0x2c,SORT=88 - .export $RECOVER_END -$RECOVER_END - -; The following declarations are, by default in the data space ($PRIVATE$) - -;; .space $PRIVATE$,1 - -/* - * Here we set up the standard date sub spaces. - * _dp is for the WinBond board. - * - * Set up some room for a stack. We just grab a chunk of memory. - * We also setup some space for the global variable space, which - * must be done using the reserved name "$global$" so "C" code - * can find it. The stack grows towards the higher addresses. - */ - - .subspa $DATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=16 - .subspa $SHORTDATA$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=24 - .subspa $GLOBAL$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=40 - .export $global$ - .export _dp -$global$ -_dp - .subspa $SHORTBSS$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=80,ZERO - .subspa $BSS$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=82,ZERO - - .subspa $STACK$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=88,ZERO - .export _stack -_stack - .BLOCK 0x2000 - -/* - * The heap follows the stack. To use dynamic memory routines in an - * application, some space MUST be assigned to the stack. - */ - - .subspa $HEAP$,QUAD=1,ALIGN=8,ACCESS=0x1f,SORT=96,ZERO - .export _heap -_heap - .end |