> You're casting a large int into a small int and this seems right.
> Just as (uchar)0x1234 => 0x34
> 
> > marshalling a 64-bit pointer in this way will lay down the
> > bytes with the hi and lo reversed.
> 
> Perhaps you meant to do *(uchar*)&x?

you're right.  what was i thinking.  still, pointers are marshaled wrong.
compiled on mips, this program

#include <u.h>
#include <libc.h>

void
main(void)
{
        char *p;

        p = malloc(100);
        print("%p\n", p);
}
does this
; 6.crash
6.crash 203443: suicide: sys: trap: #SS pc=0x2048f2

- erik

Reply via email to