diff options
author | aiju <aiju@phicode.de> | 2011-07-19 15:42:00 +0200 |
---|---|---|
committer | aiju <aiju@phicode.de> | 2011-07-19 15:42:00 +0200 |
commit | 03d71535eca82570372650678eb91e447eacfb86 (patch) | |
tree | 5f41b81e2e8b1f87012e3067dc5d79360a5e4f0f /sys/src/9/pc/trap.c | |
parent | eee8fc8f2a9a17f194d6ecf0ddcf46bbcf6f9a66 (diff) |
reading from/writing to non-existant MSRs via /dev/msr no longer crashes the system
Diffstat (limited to 'sys/src/9/pc/trap.c')
-rw-r--r-- | sys/src/9/pc/trap.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/src/9/pc/trap.c b/sys/src/9/pc/trap.c index 661aa06e8..ba52895ea 100644 --- a/sys/src/9/pc/trap.c +++ b/sys/src/9/pc/trap.c @@ -463,7 +463,13 @@ trap(Ureg* ureg) return; } } - + if(vno == VectorGPF && !user && + (ureg->pc == (ulong)(void*)tryrdmsrbody || + ureg->pc == (ulong)(void*)trywrmsrbody)){ + ureg->bp = -1; + ureg->pc += 2; + return; + } dumpregs(ureg); if(!user){ ureg->sp = (ulong)&ureg->sp; |