Initial revision
[linux-2.6.git] / include / asm-xen / asm-i386 / mach-xen / smpboot_hooks.h
1 /* two abstractions specific to kernel/smpboot.c, mainly to cater to visws
2  * which needs to alter them. */
3
4 static inline void smpboot_clear_io_apic_irqs(void)
5 {
6 #if 1
7         printk("smpboot_clear_io_apic_irqs\n");
8 #else
9         io_apic_irqs = 0;
10 #endif
11 }
12
13 static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
14 {
15 #if 1
16         printk("smpboot_setup_warm_reset_vector\n");
17 #else
18         CMOS_WRITE(0xa, 0xf);
19         local_flush_tlb();
20         Dprintk("1.\n");
21         *((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4;
22         Dprintk("2.\n");
23         *((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf;
24         Dprintk("3.\n");
25 #endif
26 }
27
28 static inline void smpboot_restore_warm_reset_vector(void)
29 {
30         /*
31          * Install writable page 0 entry to set BIOS data area.
32          */
33         local_flush_tlb();
34
35         /*
36          * Paranoid:  Set warm reset code and vector here back
37          * to default values.
38          */
39         CMOS_WRITE(0, 0xf);
40
41         *((volatile long *) phys_to_virt(0x467)) = 0;
42 }
43
44 static inline void smpboot_setup_io_apic(void)
45 {
46 #if 1
47         printk("smpboot_setup_io_apic\n");
48 #else
49         /*
50          * Here we can be sure that there is an IO-APIC in the system. Let's
51          * go and set it up:
52          */
53         if (!skip_ioapic_setup && nr_ioapics)
54                 setup_IO_APIC();
55 #endif
56 }
57
58
59 #define smp_found_config        (HYPERVISOR_shared_info->n_vcpu > 1)