Print this page
Bring back LX zones.
*** 159,169 ****
/*
* The brand infrastructure interposes on two handlers, and we use one as a
* NULL signpost.
*/
! static struct interposing_handler brand_tbl[2];
/*
* software prototypes for default local descriptor table
*/
--- 159,169 ----
/*
* The brand infrastructure interposes on two handlers, and we use one as a
* NULL signpost.
*/
! static struct interposing_handler brand_tbl[3];
/*
* software prototypes for default local descriptor table
*/
*** 975,984 ****
--- 975,990 ----
TRP_KPL, 0);
set_gatesegd(&idt[T_MCE], &mcetrap, KCS_SEL, SDT_SYSIGT, TRP_KPL, 0);
set_gatesegd(&idt[T_SIMDFPE], &xmtrap, KCS_SEL, SDT_SYSIGT, TRP_KPL, 0);
/*
+ * install "int80" handler at, well, 0x80.
+ */
+ set_gatesegd(&idt0[T_INT80], &sys_int80, KCS_SEL, SDT_SYSIGT, TRP_UPL,
+ 0);
+
+ /*
* install fast trap handler at 210.
*/
set_gatesegd(&idt[T_FASTTRAP], &fasttrap, KCS_SEL, SDT_SYSIGT, TRP_UPL,
0);
*** 999,1023 ****
*/
set_gatesegd(&idt[T_DTRACE_RET], &dtrace_ret, KCS_SEL,
SDT_SYSIGT, TRP_UPL, 0);
/*
! * Prepare interposing descriptor for the syscall handler
! * and cache copy of the default descriptor.
! */
! brand_tbl[0].ih_inum = T_SYSCALLINT;
! brand_tbl[0].ih_default_desc = idt0[T_SYSCALLINT];
#if defined(__amd64)
! set_gatesegd(&(brand_tbl[0].ih_interp_desc), &brand_sys_syscall_int,
KCS_SEL, SDT_SYSIGT, TRP_UPL, 0);
#elif defined(__i386)
! set_gatesegd(&(brand_tbl[0].ih_interp_desc), &brand_sys_call,
KCS_SEL, SDT_SYSIGT, TRP_UPL, 0);
#endif /* __i386 */
! brand_tbl[1].ih_inum = 0;
}
#if defined(__xpv)
static void
--- 1005,1035 ----
*/
set_gatesegd(&idt[T_DTRACE_RET], &dtrace_ret, KCS_SEL,
SDT_SYSIGT, TRP_UPL, 0);
/*
! - * Prepare interposing descriptors for the branded "int80"
! - * and syscall handlers and cache copies of the default
! - * descriptors.
! */
! brand_tbl[0].ih_inum = T_INT80;
! brand_tbl[0].ih_default_desc = idt0[T_INT80];
! set_gatesegd(&(brand_tbl[0].ih_interp_desc), &brand_sys_int80, KCS_SEL,
! SDT_SYSIGT, TRP_UPL, 0);
!
! brand_tbl[1].ih_inum = T_SYSCALLINT;
! brand_tbl[1].ih_default_desc = idt0[T_SYSCALLINT];
#if defined(__amd64)
! set_gatesegd(&(brand_tbl[1].ih_interp_desc), &brand_sys_syscall_int,
KCS_SEL, SDT_SYSIGT, TRP_UPL, 0);
#elif defined(__i386)
! set_gatesegd(&(brand_tbl[1].ih_interp_desc), &brand_sys_call,
KCS_SEL, SDT_SYSIGT, TRP_UPL, 0);
#endif /* __i386 */
! brand_tbl[2].ih_inum = 0;
}
#if defined(__xpv)
static void