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@789 cc03376c-175c-47c8-b038-4cd826a8556b
47 lines
602 B
ArmAsm
47 lines
602 B
ArmAsm
.file "kernel.S"
|
|
|
|
.section .ktext,"ax"
|
|
.align 2
|
|
|
|
.macro kpush reg
|
|
addiu $sp, 4
|
|
sw \reg, 0($sp)
|
|
.endm
|
|
|
|
.macro kpop reg
|
|
lw \reg, 0($sp)
|
|
addiu $sp, -4
|
|
.endm
|
|
|
|
_exc_handler:
|
|
|
|
.set noreorder
|
|
|
|
# Set Error LED and ExcCode LEDs
|
|
# Get Cause
|
|
mfc0 $26, $13
|
|
li $27, 0xC0000000
|
|
srl $26, 2
|
|
andi $26, 0x000F
|
|
or $26, $27
|
|
la $27, sys_led_port
|
|
sw $26, 0($27)
|
|
|
|
# wait for all interrupts = 0
|
|
$w4x: mfc0 $26, $13
|
|
nop
|
|
srl $26, 8
|
|
andi $26, 0xFF
|
|
bnez $26, $w4x
|
|
nop
|
|
|
|
# Get return address
|
|
mfc0 $26, $14
|
|
|
|
# Return
|
|
nop
|
|
jr $26
|
|
rfe
|
|
.set reorder
|
|
|