diff options
author | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2011-04-09 17:37:42 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2011-04-09 17:37:42 -0700 |
commit | 6e7fe98ea95c6da8c573fdc032b5269f08bbacc1 (patch) | |
tree | e0f0f3c73ad8785a95a6e8d22c96b5430370bb56 /pk/pk.c | |
parent | 666ae0c9e5355e578c2487b81f48b4b74cc16dda (diff) | |
download | riscv-pk-6e7fe98ea95c6da8c573fdc032b5269f08bbacc1.zip riscv-pk-6e7fe98ea95c6da8c573fdc032b5269f08bbacc1.tar.gz riscv-pk-6e7fe98ea95c6da8c573fdc032b5269f08bbacc1.tar.bz2 |
[xcc,pk,sim,opcodes] added first RVC instruction
Diffstat (limited to 'pk/pk.c')
-rw-r--r-- | pk/pk.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -125,10 +125,11 @@ void dump_tf(trapframe_t* tf) void init_tf(trapframe_t* tf, long pc, long sp, int user64) { memset(tf,0,sizeof(*tf)); - #ifndef PK_ENABLE_KERNEL_64BIT + if(sizeof(void*) != 8) kassert(!user64); - #endif - tf->sr = mfpcr(PCR_SR) & ~(SR_PS | SR_ET) | (user64 ? SR_UX : 0); + tf->sr = (mfpcr(PCR_SR) & (SR_IM | SR_SX)) | SR_S | SR_UC | SR_UC; + if(user64) + tf->sr |= SR_UX; tf->gpr[30] = sp; tf->epc = pc; } |