diff options
Diffstat (limited to 'i386')
-rw-r--r-- | i386/i386/model_dep.h | 5 | ||||
-rw-r--r-- | i386/i386/trap.c | 4 | ||||
-rw-r--r-- | i386/i386at/model_dep.c | 9 | ||||
-rw-r--r-- | i386/xen/xen.c | 2 |
4 files changed, 13 insertions, 7 deletions
diff --git a/i386/i386/model_dep.h b/i386/i386/model_dep.h index 54aa1ec7..711f07fd 100644 --- a/i386/i386/model_dep.h +++ b/i386/i386/model_dep.h @@ -50,4 +50,9 @@ extern void halt_cpu (void) __attribute__ ((noreturn)); */ extern void halt_all_cpus (boolean_t reboot) __attribute__ ((noreturn)); +/* + * Make cpu pause a bit. + */ +extern void machine_relax (void); + #endif /* _I386AT_MODEL_DEP_H_ */ diff --git a/i386/i386/trap.c b/i386/i386/trap.c index 281594d5..51c0f0a5 100644 --- a/i386/i386/trap.c +++ b/i386/i386/trap.c @@ -573,10 +573,10 @@ int user_trap(struct i386_saved_state *regs) void i386_astintr(void) { - int mycpu = cpu_number(); - (void) splsched(); /* block interrupts to check reasons */ #ifndef MACH_RING1 + int mycpu = cpu_number(); + if (need_ast[mycpu] & AST_I386_FP) { /* * AST was for delayed floating-point exception - diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c index 72798fd4..40bc7cdc 100644 --- a/i386/i386at/model_dep.c +++ b/i386/i386at/model_dep.c @@ -340,8 +340,7 @@ i386at_init(void) { /* XXX move to intel/pmap.h */ extern pt_entry_t *kernel_page_dir; - int nb_direct, i; - vm_offset_t addr, delta; + int i; /* * Initialize the PIC prior to any possible call to an spl. @@ -365,6 +364,8 @@ i386at_init(void) #ifdef MACH_XEN kernel_cmdline = (char*) boot_info.cmd_line; #else /* MACH_XEN */ + vm_offset_t addr; + /* Copy content pointed by boot_info before losing access to it when it * is too far in physical memory. * Also avoids leaving them in precious areas such as DMA memory. */ @@ -428,10 +429,10 @@ i386at_init(void) * until we start using our new kernel segment descriptors. */ #if INIT_VM_MIN_KERNEL_ADDRESS != LINEAR_MIN_KERNEL_ADDRESS - delta = INIT_VM_MIN_KERNEL_ADDRESS - LINEAR_MIN_KERNEL_ADDRESS; + vm_offset_t delta = INIT_VM_MIN_KERNEL_ADDRESS - LINEAR_MIN_KERNEL_ADDRESS; if ((vm_offset_t)(-delta) < delta) delta = (vm_offset_t)(-delta); - nb_direct = delta >> PDESHIFT; + int nb_direct = delta >> PDESHIFT; for (i = 0; i < nb_direct; i++) kernel_page_dir[lin2pdenum_cont(INIT_VM_MIN_KERNEL_ADDRESS) + i] = kernel_page_dir[lin2pdenum_cont(LINEAR_MIN_KERNEL_ADDRESS) + i]; diff --git a/i386/xen/xen.c b/i386/xen/xen.c index d10ecf39..f2dedfb9 100644 --- a/i386/xen/xen.c +++ b/i386/xen/xen.c @@ -44,7 +44,7 @@ void hyp_failsafe_c_callback(struct failsafe_callback_regs *regs) { panic("failsafe"); } -extern void return_to_iret; +extern char return_to_iret[]; void hypclock_machine_intr(int old_ipl, void *ret_addr, struct i386_interrupt_state *regs, uint64_t delta) { if (ret_addr == &return_to_iret) { |