2 #include "../port/lib.h"
24 if((cp = getconf("*nomp")) != nil && strtol(cp, 0, 0) != 0)
27 if (cp = getconf("*ncpu")) {
28 ncpu = strtol(cp, 0, 0);
33 for (i = 1; i < ncpu; i++) {
34 sprint(node, "cpu/%d/availability", i);
35 if (xenstore_read(node, buf, sizeof buf) <= 0)
37 print("%s: %s\n", node, buf);
38 if (strcmp(buf, "online") == 0) {
44 print("Sorry, SMP not supported yet: 1 of %lud CPUs startd\n", conf.nmach);
52 HYPERVISOR_shutdown(1);
55 int xenintrenable(Vctl *v);
56 int xenintrvecno(int irq);
57 int xenintrdisable(int irq);
58 void xentimerenable(void);
59 uvlong xentimerread(uvlong*);
60 void xentimerset(uvlong);
67 .intrenable= xenintrenable,
68 .intrvecno= xenintrvecno,
69 .intrdisable= xenintrdisable,
70 .clockenable= xentimerenable,
71 .fastclock= xentimerread,
72 .timerset= xentimerset,
76 * Placeholders to satisfy external references in generic devarch.c
78 ulong getcr4(void) { return 0; }
80 int inb(int) { return 0; }
81 ushort ins(int) { return 0; }
82 ulong inl(int) { return 0; }
83 void outb(int, int) {}
84 void outs(int, ushort) {}
85 void outl(int, ulong) {}
86 void i8042reset(void) {}
87 void i8253enable(void) {}
88 void i8253init(void) {}
89 void i8253link(void) {}
90 uvlong i8253read(uvlong*) { return 0; }
91 void i8253timerset(uvlong) {}
92 int i8259disable(int) { return 0; }
93 int i8259enable(Vctl*) { return 0; }
94 void i8259init(void) {}
95 int i8259isr(int) { return 0; }
97 void i8259off(void) {}
98 int i8259vecno(int) { return 0; }
99 int mtrrprint(char*, long) { return 0; }
100 int mtrr(uvlong, uvlong, char *) { return 0; }
103 * XXX until fpsave is debugged
112 fpsserestore(FPsave* f)