diff options
author | Yunsup Lee <yunsup@cs.berkeley.edu> | 2014-02-06 00:10:59 -0800 |
---|---|---|
committer | Yunsup Lee <yunsup@cs.berkeley.edu> | 2014-02-06 00:10:59 -0800 |
commit | d4b98bac3c304e3bed612c79680fc2226ddb7e9a (patch) | |
tree | dec076efae25e2f0a808b062140c10060125bfc2 /v/vm.c | |
parent | d4959de3364556560c51cda343d04629a0d1cd1f (diff) | |
download | env-d4b98bac3c304e3bed612c79680fc2226ddb7e9a.zip env-d4b98bac3c304e3bed612c79680fc2226ddb7e9a.tar.gz env-d4b98bac3c304e3bed612c79680fc2226ddb7e9a.tar.bz2 |
fix vector exceptions on rocket
Diffstat (limited to 'v/vm.c')
-rw-r--r-- | v/vm.c | 23 |
1 files changed, 0 insertions, 23 deletions
@@ -99,16 +99,6 @@ void handle_fault(unsigned long addr) __builtin___clear_cache(0,0); } -static void emulate_vxcptsave(trapframe_t* tf) -{ - long* where = (long*)tf->gpr[(tf->insn >> 15) & 0x1F]; - - where[0] = vgetcfg(); - where[1] = vgetvl(); - vxcptevac(&where[2]); - fence(); -} - static void do_vxcptrestore(long* where) { vsetcfg(where[0]); @@ -157,13 +147,6 @@ static void do_vxcptrestore(long* where) } } -static void emulate_vxcptrestore(trapframe_t* tf) -{ - long* where = (long*)tf->gpr[(tf->insn >> 15) & 0x1F]; - vxcptkill(); - do_vxcptrestore(where); -} - static void restore_vector(trapframe_t* tf) { if (read_csr(impl) == IMPL_ROCKET) @@ -192,12 +175,6 @@ void handle_trap(trapframe_t* tf) if (tf->insn == fssr) terminate(1); // FP test on non-FP hardware. "succeed." -#if 0 - else if ((tf->insn & 0xF83FFFFF) == 0x37B) - emulate_vxcptsave(tf); - else if ((tf->insn & 0xF83FFFFF) == 0x77B) - emulate_vxcptrestore(tf); -#endif else assert(0); tf->epc += 4; |