From 40fb6cfab89826041ad4f50a0be59f8cab987343 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 21 Jan 2017 12:09:38 +0000 Subject: [PATCH] - call crt stuff correctly git-svn-id: http://moon:8086/svn/mips@111 a8ebac50-d88d-4704-bea3-6648445a41b3 --- src/libsys/kernel.S | 9 ++++--- src/libsys/startup.S | 64 +++++++++++++++++++------------------------- 2 files changed, 34 insertions(+), 39 deletions(-) diff --git a/src/libsys/kernel.S b/src/libsys/kernel.S index 8cb9299..354890b 100644 --- a/src/libsys/kernel.S +++ b/src/libsys/kernel.S @@ -1,10 +1,13 @@ #include #include - .section .exc_vect + .text + .section .exc_vect, "ax" + .align 2 _xcpt_vector_tbl: - .fill 16, 4, 0 - + la k0, _xcpt_handler + jr k0 + nop .text LEAF(_xcpt_handler) diff --git a/src/libsys/startup.S b/src/libsys/startup.S index c3e1627..f7715a4 100644 --- a/src/libsys/startup.S +++ b/src/libsys/startup.S @@ -1,3 +1,4 @@ +#include .file "startup.S" .section .rodata @@ -6,19 +7,27 @@ argv0: .asciz "\"This-MIPS-program\"" argv: .word argv0 .text - .section .init, "ax" - .extern board_init - .extern _exc_vect_start - .extern _xcpt_handler + .section .start, "ax" + .extern _init + .extern _bss_zero .align 2 -_start: .set noreorder - # Set stack pointer - la $sp, stack_ptr - # Set global pointer - la $gp, _gp +_start: + la sp, stack_ptr + la gp, _gp + la ra, _bss_zero + j _init + nop + .text + .section .text, "ax" + .globl _bss_zero + .extern board_init + .align 2 + .set noreorder + +_bss_zero: # zero bss la $8, __bss_start la $9, _end @@ -27,43 +36,26 @@ $zeroise: bne $8, $9, $zeroise addiu $8, 4 - # Install exception vector jump code - la $t1, _exc_vect_copy_start - la $t2, _exc_vect_copy_end - la $t0, _exc_vect_start - -$install: lw $v0, 0($t1) - addiu $t1, 4 - sw $v0, 0($t0) - bne $t1, $t2, $install - addiu $t0, 4 - -_init: +_board_init: # Call board_init - la $k0, board_init - jalr $k0 + la k0, board_init + jalr k0 nop # Set environment - li $a0, 1 - la $a1, argv + li a0, 1 + la a1, argv # Call main - la $k0, main - jalr $k0 + la k0, main + jalr k0 nop # Terminate after main returns _terminate: nop - la $t0, exit - jalr $t0 - move $a0, $v0 + la t0, exit + jalr t0 + move a0, v0 -_exc_vect_copy_start: - la $k0, _xcpt_handler - jr $k0 - nop -_exc_vect_copy_end: - .set reorder