summaryrefslogtreecommitdiff
path: root/sys/src/9/pc/trap.c
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2011-07-19 15:42:00 +0200
committeraiju <aiju@phicode.de>2011-07-19 15:42:00 +0200
commit03d71535eca82570372650678eb91e447eacfb86 (patch)
tree5f41b81e2e8b1f87012e3067dc5d79360a5e4f0f /sys/src/9/pc/trap.c
parenteee8fc8f2a9a17f194d6ecf0ddcf46bbcf6f9a66 (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.c8
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;