diff options
author | jkoshy <jkoshy@FreeBSD.org> | 2009-02-03 09:01:45 +0000 |
---|---|---|
committer | jkoshy <jkoshy@FreeBSD.org> | 2009-02-03 09:01:45 +0000 |
commit | 3091212869dee5f2673091658796eb1badc0135f (patch) | |
tree | 96d3c14bf47c0873cb0d0904e26b1d0974eb9ee6 /lib/libc/string/wcscspn.c | |
parent | b5abf9646f2541381d20638c92cf7e65f51ac9a4 (diff) | |
download | FreeBSD-src-3091212869dee5f2673091658796eb1badc0135f.zip FreeBSD-src-3091212869dee5f2673091658796eb1badc0135f.tar.gz |
Improve robustness of NMI handling, for NMIs recognized in kernel
mode.
- Make the NMI handler run on its own stack (TSS_IST2).
- Store the GSBASE value for each CPU just before the start of
each NMI stack, permitting efficient retrieval using %rsp-relative
addressing.
- For NMIs taken from kernel mode, program MSR_GSBASE explicitly
since one or both of MSR_GSBASE and MSR_KGSBASE can be potentially
invalid. The current contents of MSR_GSBASE are saved and restored
at exit.
- For NMIs handled from user mode, continue to use 'swapgs' to
load the per-CPU GSBASE.
Reviewed by: jeff
Debugging help: jeff
Tested by: gnn, Artem Belevich <artemb at gmail dot com>
Diffstat (limited to 'lib/libc/string/wcscspn.c')
0 files changed, 0 insertions, 0 deletions