diff options
author | mischief <mischief@offblast.org> | 2014-06-24 18:02:25 -0700 |
---|---|---|
committer | mischief <mischief@offblast.org> | 2014-06-24 18:02:25 -0700 |
commit | 5ba95fdb07ddc2c32111a1b2f57f17aa27fcbbf5 (patch) | |
tree | c1ec54cb9ecff85b0b820a26d26a10a32a118d0c /sys/src/9/xen/fns.h | |
parent | fa03455b5057675b18d1c87aef2d1071b2088de0 (diff) |
import xen 32 bit paravirtual kernel from /n/sources/xen.
Diffstat (limited to 'sys/src/9/xen/fns.h')
-rw-r--r-- | sys/src/9/xen/fns.h | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/sys/src/9/xen/fns.h b/sys/src/9/xen/fns.h new file mode 100644 index 000000000..b6d0fc7a1 --- /dev/null +++ b/sys/src/9/xen/fns.h @@ -0,0 +1,164 @@ +#include "../port/portfns.h" + +Dirtab* addarchfile(char*, int, long(*)(Chan*,void*,long,vlong), long(*)(Chan*,void*,long,vlong)); +void archinit(void); +void bootargs(ulong); +ulong cankaddr(ulong); +int cistrcmp(char*, char*); +int cistrncmp(char*, char*, int); +#define clearmmucache() /* x86 doesn't have one */ +void clockintr(Ureg*, void*); +int (*cmpswap)(long*, long, long); +int cmpswap486(long*, long, long); +void (*coherence)(void); +void cpuid(int, ulong regs[]); +int cpuidentify(void); +void cpuidprint(void); +void (*cycles)(uvlong*); +void delay(int); +#define evenaddr(x) /* x86 doesn't care */ +void fpclear(void); +void fpenv(FPsave*); +void fpinit(void); +void fpoff(void); +void (*fprestore)(FPsave*); +void (*fpsave)(FPsave*); +void fpsserestore(FPsave*); +void fpsserestore0(FPsave*); +void fpssesave(FPsave*); +void fpssesave0(FPsave*); +ulong fpstatus(void); +void fpx87restore(FPsave*); +void fpx87save(FPsave*); +ulong getcr4(void); +char* getconf(char*); +void guesscpuhz(int); +void halt(void); +void mwait(void*); +void i8042reset(void); +void i8253enable(void); +void i8253init(void); +void i8253link(void); +uvlong i8253read(uvlong*); +void i8253timerset(uvlong); +int i8259disable(int); +int i8259enable(Vctl*); +void i8259init(void); +int i8259isr(int); +void i8259on(void); +void i8259off(void); +int i8259vecno(int); +void idle(void); +void idlehands(void); +int inb(int); +void insb(int, void*, int); +ushort ins(int); +void inss(int, void*, int); +ulong inl(int); +void insl(int, void*, int); +int intrdisable(int, void (*)(Ureg *, void *), void*, int, char*); +void intrenable(int, void (*)(Ureg*, void*), void*, int, char*); +int ioalloc(int, int, int, char*); +int isaconfig(char*, int, ISAConf*); +void kbdenable(void); +#define kmapinval() +void lgdt(ushort[3]); // XXX remove and in l.s +void lidt(ushort[3]); // XXX remove and in l.s +void links(void); +void ltr(ulong); // XXX remove? +void mach0init(void); +void mathinit(void); +void mb386(void); +void mb586(void); +void mfence(void); +void mmuflushtlb(Page*); +void mmuinit(void); +ulong mmukmap(ulong, ulong, int); +int mmukmapsync(ulong); +#define mmunewpage(x) +ulong* mmuwalk(ulong*, ulong, int, int); +int mtrr(uvlong, uvlong, char *); +int mtrrprint(char *, long); +void outb(int, int); +void outsb(int, void*, int); +void outs(int, ushort); +void outss(int, void*, int); +void outl(int, ulong); +void outsl(int, void*, int); +void printcpufreq(void); +void procrestore(Proc*); +void procsave(Proc*); +void procsetup(Proc*); +void procfork(Proc*); +void putcr4(ulong); +int rdmsr(int, vlong*); +int screenprint(char*, ...); /* debugging */ +void (*screenputs)(char*, int); +void touser(void*); +void trap(Ureg*); +void trapenable(int, void (*)(Ureg*, void*), void*, char*); +void trapinit(void); +int tas(void*); +#define userureg(ur) (((ur)->cs & 0xFFFF) == UESEL) +void vectortable(void); +int wrmsr(int, vlong); +uint xchgl(uint*, uint); +uint xchgw(ushort*, uint); +uint xchgb(uchar*, uint); + +#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) +#define KADDR(a) ((void*)((ulong)(a)|KZERO)) +#define PADDR(a) ((ulong)(a)&~KZERO) + +#define dcflush(a, b) + +/* Xen functions */ +#define rmb() coherence() +#define wmb() coherence() +void mb(void); +void hypervisor_callback(void), failsafe_callback(void); +void xenconsinit(void); +ulong mmumapframe(ulong, ulong); +void mmumapcpu0(void); +void dprint(char *, ...); +void xenupdate(ulong *ptr, ulong val); +void xenupdatema(ulong *ptr, uvlong val); +int xenpdptpin(ulong va); +int xenpgdpin(ulong va); +int xenptpin(ulong va); +void xenptunpin(ulong va); +void xenptswitch(ulong pa); +void xentlbflush(void); +int ffs(ulong); +void xengrantinit(void); +int xengrant(domid_t domid, ulong frame, int flags); +int xengrantend(int ref); +void acceptframe(int ref, void *va); +int donateframe(int domid, void *va); +int shareframe(int domid, void *va, int write); +void xenchannotify(int); +void xenupcall(Ureg*); +ulong xenwallclock(void); +int xenstore_read(char*, char*, int); +void xenstore_write(char*, char*); +void xenstore_setd(char *dir, char *node, int value); +int xenstore_gets(char *dir, char *node, char *buf, int buflen); +int xenchanalloc(int); + +long HYPERVISOR_set_timer_op(uvlong timeout); +int HYPERVISOR_set_trap_table(trap_info_t *table); +int HYPERVISOR_mmu_update(mmu_update_t *req, int count, int *success_count, domid_t domid); +int HYPERVISOR_mmuext_op(struct mmuext_op *op, int count, int *scount, domid_t domid); +int HYPERVISOR_set_gdt(ulong *frame_list, int entries); +int HYPERVISOR_stack_switch(ulong ss, ulong esp); +int HYPERVISOR_set_callbacks(ulong evss, ulong evfunc, ulong fsss, ulong fsfunc); +int HYPERVISOR_fpu_taskswitch(void); +int HYPERVISOR_yield(void); +int HYPERVISOR_block(void); +int HYPERVISOR_shutdown(int); +int HYPERVISOR_multicall(void *call_list, int nr_calls); +int HYPERVISOR_event_channel_op(void *op); +int HYPERVISOR_xen_version(int cmd, void *arg); +int HYPERVISOR_console_io(int cmd, int count, char *str); +int HYPERVISOR_grant_table_op(int cmd, gnttab_setup_table_t *setup, int count); +int HYPERVISOR_memory_op(int cmd, struct xen_memory_reservation *arg); |