You'll also find that the bytes get written in the opposite order (to i386).
If you are trying to make protocol packets that will matter.
You'll also need to ensure that the 32bit items within the packets are actually aligned - if not you'll need to do byte assignments.
If your code had used structures (not magic constants) for the layouts you can do things like;
#define aligned(n) __attribute__(aligned(n)))# define verify_size(type, size) typedef char verify_##type
typedef unsigned it u32_align16 aligned(2);
struct foo {
unsigned short a;
u32_align_16 b;
};
/* verify size */
verify_size(foo, 6);
The compiler will then do two 16bit accesses for 'b'.
If you need to byteswap data, add a combinatorial custom instruction to do it.