- added exception vector table.

S/W can write exception handler entry to this table.
  Exception handler can now reside anywhere in memory.

Committed on the Free edition of March Hare Software CVSNT Server.
Upgrade to CVS Suite for more features and support:
http://march-hare.com/cvsnt/


git-svn-id: http://moon:8086/svn/vhdl/trunk@494 cc03376c-175c-47c8-b038-4cd826a8556b
This commit is contained in:
2009-10-03 16:48:28 +00:00
parent f706de00bb
commit 21f33a1768
3 changed files with 50 additions and 13 deletions
+31
View File
@@ -9,11 +9,19 @@ argv: .word argv0
.section .start, "ax"
.extern _init
.extern dbg_init
.extern _exc_vect_start
.extern _xcpt_handler
.align 2
.globl _start
_start:
.set noreorder
j init
nop
.set reorder
.text
.set noreorder
init:
# Set stack pointer
la $sp, stack_ptr
# Set global pointer
@@ -27,6 +35,17 @@ $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
# Call _init
la $k0, _init
jalr $k0
@@ -41,6 +60,12 @@ $zeroise:
li $a0, 1
la $a1, argv
# Set user-mode
mfc0 $a0, $12
li $a1, 3
or $a0, $a1
mtc0 $a0, $12
# Call main
la $k0, main
jalr $k0
@@ -52,5 +77,11 @@ _terminate:
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