summaryrefslogtreecommitdiff
path: root/i386
diff options
context:
space:
mode:
Diffstat (limited to 'i386')
-rw-r--r--i386/i386/model_dep.h5
-rw-r--r--i386/i386/trap.c4
-rw-r--r--i386/i386at/model_dep.c9
-rw-r--r--i386/xen/xen.c2
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) {