use u32int for registers in the pc kernel. still not consistent on this, but getting a little big closer. Reference: /n/atom/patch/applied/pcu32intreg Date: Sat Jan 11 22:34:57 CET 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/9/pc/dat.h Sat Jan 11 22:34:33 2014 +++ /sys/src/9/pc/dat.h Sat Jan 11 22:34:33 2014 @@ -48,11 +48,10 @@ struct Label { - ulong sp; - ulong pc; + uintptr sp; + uintptr pc; }; - /* * FPsave.status */ @@ -69,18 +68,18 @@ struct FPsave { - ushort control; - ushort r1; - ushort status; - ushort r2; - ushort tag; - ushort r3; - ulong pc; - ushort selector; - ushort r4; - ulong operand; - ushort oselector; - ushort r5; + u16int control; + u16int r1; + u16int status; + u16int r2; + u16int tag; + u16int r3; + u32int pc; + u16int selector; + u16int r4; + u32int operand; + u16int oselector; + u16int r5; uchar regs[80]; /* floating point registers */ }; @@ -140,38 +139,38 @@ #include "../port/portdat.h" typedef struct { - ulong link; /* link (old TSS selector) */ - ulong esp0; /* privilege level 0 stack pointer */ - ulong ss0; /* privilege level 0 stack selector */ - ulong esp1; /* privilege level 1 stack pointer */ - ulong ss1; /* privilege level 1 stack selector */ - ulong esp2; /* privilege level 2 stack pointer */ - ulong ss2; /* privilege level 2 stack selector */ - ulong xcr3; /* page directory base register - not used because we don't use trap gates */ - ulong eip; /* instruction pointer */ - ulong eflags; /* flags register */ - ulong eax; /* general registers */ - ulong ecx; - ulong edx; - ulong ebx; - ulong esp; - ulong ebp; - ulong esi; - ulong edi; - ulong es; /* segment selectors */ - ulong cs; - ulong ss; - ulong ds; - ulong fs; - ulong gs; - ulong ldt; /* selector for task's LDT */ - ulong iomap; /* I/O map base address + T-bit */ + u32int link; /* link (old TSS selector) */ + u32int esp0; /* privilege level 0 stack pointer */ + u32int ss0; /* privilege level 0 stack selector */ + u32int esp1; /* privilege level 1 stack pointer */ + u32int ss1; /* privilege level 1 stack selector */ + u32int esp2; /* privilege level 2 stack pointer */ + u32int ss2; /* privilege level 2 stack selector */ + u32int xcr3; /* page directory base register - not used because we don't use trap gates */ + u32int eip; /* instruction pointer */ + u32int eflags; /* flags register */ + u32int eax; /* general registers */ + u32int ecx; + u32int edx; + u32int ebx; + u32int esp; + u32int ebp; + u32int esi; + u32int edi; + u32int es; /* segment selectors */ + u32int cs; + u32int ss; + u32int ds; + u32int fs; + u32int gs; + u32int ldt; /* selector for task's LDT */ + u32int iomap; /* I/O map base address + T-bit */ } Tss; struct Segdesc { - ulong d0; - ulong d1; + u32int d0; + u32int d1; }; struct Mach @@ -346,13 +345,13 @@ * hardware info about a device */ typedef struct { - ulong port; + u32int port; int size; } Devport; struct DevConf { - ulong intnum; /* interrupt number */ + int intnum; /* interrupt number */ char *type; /* card type, malloced */ int nports; /* Number of ports */ Devport *ports; /* The ports themselves */ --- /sys/src/9/pc/main.c Sat Jan 11 22:34:33 2014 +++ /sys/src/9/pc/main.c Sat Jan 11 22:34:33 2014 @@ -496,7 +496,7 @@ msg = "invalid operation"; } snprint(note, sizeof note, "sys: fp: %s fppc=%#p status=%#ux", - msg, up->fpsave.pc, status); + msg, (uintptr)up->fpsave.pc, status); postnote(up, 1, note, NDebug); } @@ -521,7 +521,7 @@ if((ur->pc & 0xf0000000) == KZERO) panic("fp: status %ux fppc=%#p pc=%#p", - up->fpsave.status, up->fpsave.pc, ur->pc); + up->fpsave.status, (uintptr)up->fpsave.pc, ur->pc); } /* --- /sys/src/9/pc/etherelnk3.c Sat Jan 11 22:34:33 2014 +++ /sys/src/9/pc/etherelnk3.c Sat Jan 11 22:34:33 2014 @@ -558,7 +558,7 @@ /* On the 575B and C, interrupts need to be acknowledged in CardBus memory space */ static void -intrackcb(ulong *cbfn) +intrackcb(u32int *cbfn) { cbfn[1] = 0x8000; }