physical address → uintmem, not uintptr. i/o port address → no particular type, but int seems more logical than uintptr. Reference: /n/patches.lsub.org/patch/acpipa Date: Sun Jul 22 05:51:42 CES 2012 Signed-off-by: quanstro@quanstro.net --- /sys/src/nix/k10/acpi.h Thu Apr 12 12:26:27 2012 +++ /sys/src/nix/k10/acpi.h Sun Jul 22 04:48:18 2012 @@ -104,9 +104,9 @@ struct Gpe { - uintptr stsio; /* port used for status */ + int stsio; /* port used for status */ int stsbit; /* bit number */ - uintptr enio; /* port used for enable */ + int enio; /* port used for enable */ int enbit; /* bit number */ int nb; /* event number */ char* obj; /* handler object */ @@ -235,7 +235,7 @@ */ struct Madt { - u64int lapicpa; /* local APIC addr */ + uintmem lapicpa; /* local APIC addr */ int pcat; /* the machine has PC/AT 8259s */ Apicst* st; /* list of Apic related structures */ }; @@ -251,8 +251,8 @@ } lapic; struct{ int id; /* io apic id */ - u32int ibase; /* interrupt base addr. */ - u64int addr; /* base address */ + int ibase; /* interrupt base addr. */ + uintmem addr; /* base address */ } ioapic, iosapic; struct{ int irq; /* bus intr. source (ISA only) */ --- /sys/src/nix/k10/devacpi.c Tue Jul 10 14:41:49 2012 +++ /sys/src/nix/k10/devacpi.c Sun Jul 22 04:51:04 2012 @@ -424,7 +424,7 @@ } static void * -sdtmap(uintptr pa, int *n, int cksum) +sdtmap(uintmem pa, int *n, int cksum) { Sdthdr* sdt; @@ -448,7 +448,7 @@ } static int -loadfacs(uintptr pa) +loadfacs(uintmem pa) { int n; @@ -473,7 +473,7 @@ } static void -loaddsdt(uintptr pa) +loaddsdt(uintmem pa) { int n; uchar *dsdtp; @@ -990,10 +990,8 @@ st->lnmi.lint = p[5]; break; case ASladdr: - /* This is for 64 bits, perhaps we should not - * honor it on 32 bits. - */ - apics->lapicpa = l64get(p+8); + if(sizeof(apics->lapicpa) >= 8) + apics->lapicpa = l64get(p+8); break; case ASiosapic: id = st->iosapic.id = p[2]; @@ -1117,7 +1115,7 @@ acpixsdtload(char *sig) { int i, l, t, unmap, found; - uintptr dhpa; + uintmem dhpa; uchar *sdt; char tsig[5]; @@ -1168,7 +1166,7 @@ static void* rsdsearch(char* signature) { - uintptr p; + uintmem p; u8int *bda; void *rsd; @@ -1192,7 +1190,7 @@ { Rsdp *rsd; int asize; - uintptr sdtpa; + uintmem sdtpa; if((rsd = rsdsearch("RSD PTR ")) == nil) return; @@ -1273,9 +1271,6 @@ static int Gfmt(Fmt* f) { - static char* rnames[] = { - "mem", "io", "pcicfg", "embed", - "smb", "cmos", "pcibar", "ipmi"}; Gas *g; g = va_arg(f->args, Gas*); @@ -1287,7 +1282,7 @@ case Rcmos: case Rpcibar: case Ripmi: - fmtprint(f, "[%s ", rnames[g->spc]); + fmtprint(f, "[%s ", acpiregstr(g->spc)); break; case Rpcicfg: fmtprint(f, "[pci "); @@ -1306,7 +1301,7 @@ } static uint -getbanked(uintptr ra, uintptr rb, int sz) +getbanked(int ra, int rb, int sz) { uint r; @@ -1337,7 +1332,7 @@ } static uint -setbanked(uintptr ra, uintptr rb, int sz, int v) +setbanked(int ra, int rb, int sz, int v) { uint r;