On Tue, Jul 13, 2004 at 05:33:41PM +0530, amith wrote: > PS: This code runs smoothly on an ARM if i make sure i write to word > boundaries . i.e if i comment out Buffer++. > Hope its a known problem and someone helps :-) !
It's part of the architecture. You'll have to re-write your code to read chars from a char * pointer and splice them together with bit shifts to get the 32 bit values you want. Your code as is is not portable, and not ANSI conformant C. It happens to work on x86 because x86 has no alignment constraints. Offhand I'm not sure which other RISC platforms would segfault with your code, as I believe some do messy kernel fixups to fake it working, but generally you cannot rely on reading values larger than char from arbitrary alignments. Nicholas Clark

