an uncomprehensive attempt to clean up some type mistakes in k10 - don't use uvlong for uintmem - don't use uintptr for a pa - don't use PTE for uintmem (walkalloc's alloc) i see the argument that walkalloc wants an address that'll fit in a PTE, but i can't make sense of sizeof(PTE) != sizeof(uintmem), and alloc() needs to return a physical address (pointer to physical memory), not a PTE (64-bit integer). would changing "uintmem" to "paddr" or some such help promote more type accuracy? Reference: /n/patches.lsub.org/patch/typecruft Date: Mon Jul 23 16:16:05 CES 2012 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/map.c Thu Apr 12 12:26:28 2012 +++ /sys/src/nix/k10/map.c Mon Jul 23 14:56:46 2012 @@ -10,7 +10,7 @@ #define TMFM (64*MiB) void* -KADDR(uintptr pa) +KADDR(uintmem pa) { u8int* va; --- /sys/src/nix/k10/ioapic.c Tue Jul 10 14:41:50 2012 +++ /sys/src/nix/k10/ioapic.c Mon Jul 23 14:57:41 2012 @@ -120,7 +120,7 @@ } void -ioapicinit(int id, int ibase, uintptr pa) +ioapicinit(int id, int ibase, uintmem pa) { Apic *apic; static int base; --- /sys/src/nix/k10/mmu.c Thu Jul 19 10:16:26 2012 +++ /sys/src/nix/k10/mmu.c Mon Jul 23 15:11:47 2012 @@ -20,7 +20,7 @@ #define PPN(x) ((x)&~(PGSZ-1)) void -mmuflushtlb(u64int) +mmuflushtlb(uintmem) { PTE *pte; int i; @@ -126,7 +126,7 @@ } void -dumpmmuwalk(u64int addr) +dumpmmuwalk(uintmem addr) { int l; PTE *pte, *pml4; @@ -706,7 +706,7 @@ } int -mmuwalk(PTE* pml4, uintptr va, int level, PTE** ret, u64int (*alloc)(usize)) +mmuwalk(PTE* pml4, uintptr va, int level, PTE** ret, uintmem (*alloc)(usize)) { int l; uintmem pa; --- /sys/src/nix/k10/dat.h Thu Jul 19 10:16:25 2012 +++ /sys/src/nix/k10/dat.h Mon Jul 23 15:01:37 2012 @@ -379,12 +379,12 @@ struct ISAConf { char *type; - uintptr port; + uintmem port; int irq; ulong dma; - uintptr mem; + uintmem mem; usize size; - ulong freq; + int freq; int nopt; char *opt[NISAOPT]; --- /sys/src/nix/k10/mem.h Thu Apr 12 12:26:28 2012 +++ /sys/src/nix/k10/mem.h Mon Jul 23 15:04:23 2012 @@ -14,7 +14,7 @@ #define MIN(a, b) ((a) < (b)? (a): (b)) #define MAX(a, b) ((a) > (b)? (a): (b)) -#define ALIGNED(p, a) (!(((uintptr)(p)) & ((a)-1))) +#define ALIGNED(va, a) (!(((uintptr)(va)) & ((a)-1))) /* * Sizes --- /sys/src/nix/k10/asm.c Thu Apr 12 12:26:27 2012 +++ /sys/src/nix/k10/asm.c Mon Jul 23 15:05:04 2012 @@ -284,7 +284,7 @@ return UINT2PTR(va); } -static PTE +static uintmem asmwalkalloc(usize size) { uintmem pa; --- /sys/src/nix/k10/fpu.c Thu Apr 12 12:26:27 2012 +++ /sys/src/nix/k10/fpu.c Mon Jul 23 15:06:24 2012 @@ -77,7 +77,7 @@ extern void _stts(void); int -fpudevprocio(Proc* proc, void* a, long n, uintptr offset, int write) +fpudevprocio(Proc* proc, void* a, long n, vlong offset, int write) { uchar *p; --- /sys/src/nix/k10/fns.h Thu Jul 19 10:16:26 2012 +++ /sys/src/nix/k10/fns.h Mon Jul 23 15:10:56 2012 @@ -41,10 +41,10 @@ int decref(Ref*); void delay(int); void dumpmmu(Proc*); -void dumpmmuwalk(u64int pa); -void dumpptepg(int lvl,uintptr pa); +void dumpmmuwalk(uintmem pa); +void dumpptepg(int lvl,uintmem pa); #define evenaddr(x) /* x86 doesn't care */ -int fpudevprocio(Proc*, void*, long, uintptr, int); +int fpudevprocio(Proc*, void*, long, vlong, int); void fpuinit(void); void fpunoted(void); void fpunotify(Ureg*); @@ -97,16 +97,14 @@ void links(void); void mach0init(void); void machinit(void); -void mapraminit(uvlong, uvlong); -void mapupainit(uvlong, ulong); void meminit(void); void mfence(void); -void mmuflushtlb(u64int); +void mmuflushtlb(uintmem); void mmuinit(void); -int mmukmapsync(uvlong); -uintptr mmukmap(uintptr, uintptr, usize); +int mmukmapsync(uintmem); +uintptr mmukmap(uintptr, uintmem, usize); uintmem mmuphysaddr(uintptr); -int mmuwalk(PTE*, uintptr, int, PTE**, PTE (*)(usize)); +int mmuwalk(PTE*, uintptr, int, PTE**, uintmem (*)(usize)); int multiboot(u32int, u32int, int); void ndnr(void); void noerrorsleft(void); @@ -193,7 +191,7 @@ #define PTR2UINT(p) ((uintptr)(p)) #define UINT2PTR(i) ((void*)(i)) -void* KADDR(uintptr); +void* KADDR(uintmem); uintmem PADDR(void*); #define BIOSSEG(a) KADDR(((uint)(a))<<4)