diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-06-19 22:26:27 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-06-19 22:26:27 +0200 |
commit | 5bb8203bf6cf2db988fc61ffaf8bf39aa30fabfe (patch) | |
tree | 3174386f75f920c34c4a48707b428295be5000c3 /sys/src/cmd/scram.c | |
parent | 40bc0b9de717c9f7cfadcca1d6d21bb115b3e8bb (diff) |
acpi: use Tblsz enum instead of sizeof(Tbl) due to alignment, enable use tsc on terminal kernel (thank erik)
Diffstat (limited to 'sys/src/cmd/scram.c')
-rw-r--r-- | sys/src/cmd/scram.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/src/cmd/scram.c b/sys/src/cmd/scram.c index cbbe8d90d..1ce3aa6e8 100644 --- a/sys/src/cmd/scram.c +++ b/sys/src/cmd/scram.c @@ -25,6 +25,10 @@ struct Tbl { uchar data[]; }; +enum { + Tblsz = 4+4+1+1+6+8+4+4+4, +}; + void* amlalloc(int n){ return mallocz(n, 1); @@ -64,15 +68,15 @@ loadacpi(void) amlinit(); for(;;){ t = malloc(sizeof(*t)); - if((n = readn(fd, t, sizeof(*t))) <= 0) + if((n = readn(fd, t, Tblsz)) <= 0) break; - if(n != sizeof(*t)) + if(n != Tblsz) return -1; l = get32(t->len); - if(l < sizeof(*t)) + if(l < Tblsz) return -1; - t = realloc(t, l); - l -= sizeof(*t); + l -= Tblsz; + t = realloc(t, sizeof(*t) + l); if(readn(fd, t->data, l) != l) return -1; if(memcmp("DSDT", t->sig, 4) == 0) |