summaryrefslogtreecommitdiff
path: root/sys/src/cmd/scram.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-06-19 22:26:27 +0200
committercinap_lenrek <cinap_lenrek@gmx.de>2013-06-19 22:26:27 +0200
commit5bb8203bf6cf2db988fc61ffaf8bf39aa30fabfe (patch)
tree3174386f75f920c34c4a48707b428295be5000c3 /sys/src/cmd/scram.c
parent40bc0b9de717c9f7cfadcca1d6d21bb115b3e8bb (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.c14
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)