- validaddr(arg[0], sizeof(long), 1);
- evenaddr(arg[0]);
- addr = (long*)arg[0];
- delta = arg[1];
-
- if((s = seg(up, (ulong)addr, 0)) == nil)
+ addr = va_arg(list, long*);
+ delta = va_arg(list, long);
+ evenaddr((uintptr)addr);
+ s = seg(up, (uintptr)addr, 0);
+ if(s == nil || (s->type&SG_RONLY) != 0 || (uintptr)addr+sizeof(long) > s->top){
+ validaddr((uintptr)addr, sizeof(long), 1);