Changeset View
Changeset View
Standalone View
Standalone View
sys/i386/i386/machdep.c
Show First 20 Lines • Show All 1,691 Lines • ▼ Show 20 Lines | machdep_init_trampoline(void) | ||||
_default_ldt = GSEL(GLDT_SEL, SEL_KPL); | _default_ldt = GSEL(GLDT_SEL, SEL_KPL); | ||||
lldt(_default_ldt); | lldt(_default_ldt); | ||||
PCPU_SET(currentldt, _default_ldt); | PCPU_SET(currentldt, _default_ldt); | ||||
copyout_buf = pmap_trm_alloc(TRAMP_COPYOUT_SZ, M_NOWAIT); | copyout_buf = pmap_trm_alloc(TRAMP_COPYOUT_SZ, M_NOWAIT); | ||||
PCPU_SET(copyout_buf, copyout_buf); | PCPU_SET(copyout_buf, copyout_buf); | ||||
copyout_init_tramp(); | copyout_init_tramp(); | ||||
} | } | ||||
SYSINIT(vm_mem, SI_SUB_VM, SI_ORDER_SECOND, machdep_init_trampoline, NULL); | SYSINIT(vm_mem, SI_SUB_VM, SI_ORDER_SECOND, machdep_init_trampoline); | ||||
#ifdef COMPAT_43 | #ifdef COMPAT_43 | ||||
static void | static void | ||||
i386_setup_lcall_gate(void) | i386_setup_lcall_gate(void) | ||||
{ | { | ||||
struct sysentvec *sv; | struct sysentvec *sv; | ||||
struct user_segment_descriptor desc; | struct user_segment_descriptor desc; | ||||
u_int lcall_addr; | u_int lcall_addr; | ||||
sv = &elf32_freebsd_sysvec; | sv = &elf32_freebsd_sysvec; | ||||
lcall_addr = (uintptr_t)sv->sv_psstrings - sz_lcall_tramp; | lcall_addr = (uintptr_t)sv->sv_psstrings - sz_lcall_tramp; | ||||
bzero(&desc, sizeof(desc)); | bzero(&desc, sizeof(desc)); | ||||
desc.sd_type = SDT_MEMERA; | desc.sd_type = SDT_MEMERA; | ||||
desc.sd_dpl = SEL_UPL; | desc.sd_dpl = SEL_UPL; | ||||
desc.sd_p = 1; | desc.sd_p = 1; | ||||
desc.sd_def32 = 1; | desc.sd_def32 = 1; | ||||
desc.sd_gran = 1; | desc.sd_gran = 1; | ||||
desc.sd_lolimit = 0xffff; | desc.sd_lolimit = 0xffff; | ||||
desc.sd_hilimit = 0xf; | desc.sd_hilimit = 0xf; | ||||
desc.sd_lobase = lcall_addr; | desc.sd_lobase = lcall_addr; | ||||
desc.sd_hibase = lcall_addr >> 24; | desc.sd_hibase = lcall_addr >> 24; | ||||
bcopy(&desc, &ldt[LSYS5CALLS_SEL], sizeof(desc)); | bcopy(&desc, &ldt[LSYS5CALLS_SEL], sizeof(desc)); | ||||
} | } | ||||
SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_ANY, i386_setup_lcall_gate, NULL); | SYSINIT(elf32, SI_SUB_EXEC, SI_ORDER_ANY, i386_setup_lcall_gate); | ||||
#endif | #endif | ||||
void | void | ||||
cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) | cpu_pcpu_init(struct pcpu *pcpu, int cpuid, size_t size) | ||||
{ | { | ||||
pcpu->pc_acpi_id = 0xffffffff; | pcpu->pc_acpi_id = 0xffffffff; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 148 Lines • Show Last 20 Lines |