aboutsummaryrefslogtreecommitdiff
path: root/pk/entry.S
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2011-04-16 19:46:00 -0700
committerAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2011-04-16 19:46:00 -0700
commit0be1f5eb1b1ff0c31036c9f1b7efeedee7fe4909 (patch)
treee5b6e4d5a1238c32c84f59638c8ac88f81ebcdee /pk/entry.S
parent6b9ea8b8e0d3bdf66727a2bc3e9dce72a77fa514 (diff)
downloadriscv-pk-0be1f5eb1b1ff0c31036c9f1b7efeedee7fe4909.zip
riscv-pk-0be1f5eb1b1ff0c31036c9f1b7efeedee7fe4909.tar.gz
riscv-pk-0be1f5eb1b1ff0c31036c9f1b7efeedee7fe4909.tar.bz2
[pk] fixed timer interrupt handler, etc.
Diffstat (limited to 'pk/entry.S')
-rw-r--r--pk/entry.S9
1 files changed, 8 insertions, 1 deletions
diff --git a/pk/entry.S b/pk/entry.S
index 5fe0be2..6f0d1a0 100644
--- a/pk/entry.S
+++ b/pk/entry.S
@@ -128,8 +128,15 @@ pop_tf: # write the trap frame onto the stack
trap_entry:
mtpcr $ra,ASM_CR(PCR_K0)
mtpcr $x2,ASM_CR(PCR_K1)
+
+ # when coming from kernel, continue below its stack
+ mfpcr $ra,ASM_CR(PCR_SR)
+ and $ra,$ra,SR_PS
+ add $x2, $sp, -320
+ bnez $ra, 1f
la $x2,stack_top-320
- jal save_tf
+
+1:jal save_tf
move $sp,$x2
move $a0,$x2
jal handle_trap