diff options
author | Yunsup Lee <yunsup@cs.berkeley.edu> | 2010-10-17 14:08:12 -0700 |
---|---|---|
committer | Yunsup Lee <yunsup@cs.berkeley.edu> | 2010-10-17 14:08:12 -0700 |
commit | 9297008e44254848cfa42726272640b641282665 (patch) | |
tree | 026813cd81b607994d156f399d5e725b7952bc7a /pk/pk.c | |
parent | b4fd490d689415205cf315c02f673b9386ece337 (diff) | |
download | riscv-pk-9297008e44254848cfa42726272640b641282665.zip riscv-pk-9297008e44254848cfa42726272640b641282665.tar.gz riscv-pk-9297008e44254848cfa42726272640b641282665.tar.bz2 |
[pk] zero out fp regs
Diffstat (limited to 'pk/pk.c')
-rw-r--r-- | pk/pk.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -130,6 +130,18 @@ void init_tf(trapframe_t* tf, long pc, long sp) tf->epc = USER_START; } +void init_fp() +{ + if (have_fp) + { + register long sr; + sr = mfpcr(PCR_SR); + mtpcr(sr | SR_EF, PCR_SR); + init_fpregs(); + mtpcr(sr, PCR_SR); + } +} + void bss_init() { extern char edata,end; @@ -146,6 +158,7 @@ void mainvars_init() void jump_usrstart() { + init_fp(); trapframe_t tf; init_tf(&tf, USER_START, USER_MEM_SIZE-USER_MAINVARS_SIZE); pop_tf(&tf); |