Print this page
8956 Implement KPTI
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Robert Mustacchi <rm@joyent.com>
*** 20,29 ****
--- 20,30 ----
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
+ * Copyright 2018 Joyent, Inc.
*/
#if defined(__lint)
*** 50,59 ****
--- 51,63 ----
movb val, %al; \
outb $0x80;
#define DISABLE_PAGING \
+ movl %cr4, %eax ;\
+ btrl $17, %eax /* clear PCIDE bit */ ;\
+ movl %eax, %cr4 ;\
movl %cr0, %eax ;\
btrl $31, %eax /* clear PG bit */ ;\
movl %eax, %cr0
/*
*** 220,229 ****
--- 224,234 ----
/*
* Disable long mode by:
* - shutting down paging (bit 31 of cr0). This will flush the
* TLBs.
+ * - turning off PCID in cr4
* - disabling LME (long mode enable) in EFER (extended feature reg)
*/
#endif
DISABLE_PAGING /* clobbers %eax */