summaryrefslogtreecommitdiffstats
path: root/sys/amd64/ia32/ia32_syscall.c
diff options
context:
space:
mode:
authorLuiz Souza <luiz@netgate.com>2018-02-23 19:44:33 -0300
committerLuiz Souza <luiz@netgate.com>2018-02-23 19:44:33 -0300
commit2eec73396569fbb21ec9fa2a0590ed94dfa3b8a4 (patch)
treeb4f4ee73e5e8c54eae5d77612fb72dfe8991123e /sys/amd64/ia32/ia32_syscall.c
parent61381ad9e72c5503ff876f702a7ee9b75cc82031 (diff)
downloadFreeBSD-src-2eec73396569fbb21ec9fa2a0590ed94dfa3b8a4.zip
FreeBSD-src-2eec73396569fbb21ec9fa2a0590ed94dfa3b8a4.tar.gz
Revert "Revert "MFC r328083,328096,328116,328119,328120,328128,328135,328153,328157,""
This reverts commit d3d59b01294138e59995b31d2bcbbbdf45e26a3c.
Diffstat (limited to 'sys/amd64/ia32/ia32_syscall.c')
-rw-r--r--sys/amd64/ia32/ia32_syscall.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/amd64/ia32/ia32_syscall.c b/sys/amd64/ia32/ia32_syscall.c
index c07b38c..f743440 100644
--- a/sys/amd64/ia32/ia32_syscall.c
+++ b/sys/amd64/ia32/ia32_syscall.c
@@ -93,7 +93,8 @@ __FBSDID("$FreeBSD$");
#define IDTVEC(name) __CONCAT(X,name)
-extern inthand_t IDTVEC(int0x80_syscall), IDTVEC(rsvd);
+extern inthand_t IDTVEC(int0x80_syscall), IDTVEC(int0x80_syscall_pti),
+ IDTVEC(rsvd), IDTVEC(rsvd_pti);
void ia32_syscall(struct trapframe *frame); /* Called from asm code */
@@ -206,14 +207,16 @@ static void
ia32_syscall_enable(void *dummy)
{
- setidt(IDT_SYSCALL, &IDTVEC(int0x80_syscall), SDT_SYSIGT, SEL_UPL, 0);
+ setidt(IDT_SYSCALL, pti ? &IDTVEC(int0x80_syscall_pti) :
+ &IDTVEC(int0x80_syscall), SDT_SYSIGT, SEL_UPL, 0);
}
static void
ia32_syscall_disable(void *dummy)
{
- setidt(IDT_SYSCALL, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0);
+ setidt(IDT_SYSCALL, pti ? &IDTVEC(rsvd_pti) : &IDTVEC(rsvd),
+ SDT_SYSIGT, SEL_KPL, 0);
}
SYSINIT(ia32_syscall, SI_SUB_EXEC, SI_ORDER_ANY, ia32_syscall_enable, NULL);
OpenPOWER on IntegriCloud