| #include <stdio.h> |
| #include <arpa/inet.h> /* for htons() etc.. */ |
| |
| static char tab[8]; |
| |
| static void |
| read4( int o, unsigned val ) |
| { |
| unsigned v = htonl(val); |
| unsigned v2; |
| |
| tab[o+0] = (char)(v >> 24); |
| tab[o+1] = (char)(v >> 16); |
| tab[o+2] = (char)(v >> 8); |
| tab[o+3] = (char)(v); |
| |
| printf( "read4: offset=%d value=%08x: ", o, val ); |
| fflush(stdout); |
| |
| v2 = *(unsigned*)(tab+o); |
| |
| if (v2 != val) { |
| printf( "FAIL (%08x)\n", v2 ); |
| } else { |
| printf( "ok\n" ); |
| } |
| } |
| |
| static void |
| writ4( int o, unsigned val ) |
| { |
| unsigned v = htonl(val); |
| unsigned v2; |
| |
| printf( "writ4: offset=%d value=%08x: ", o, val ); |
| fflush(stdout); |
| |
| *(unsigned*)(tab+o) = v; |
| |
| v2 = ((unsigned)tab[o+0] << 24) | |
| ((unsigned)tab[o+1] << 16) | |
| ((unsigned)tab[o+2] << 8 ) | |
| ((unsigned)tab[o+3] ); |
| |
| if (v2 != val) { |
| printf( "FAIL (%08x)\n", v2 ); |
| } else { |
| printf( "ok\n" ); |
| } |
| } |
| |
| static void |
| read2( int o, unsigned val ) |
| { |
| unsigned short v = htons(val); |
| unsigned short v2; |
| |
| tab[o+0] = (char)(v >> 8); |
| tab[o+1] = (char)(v); |
| |
| printf( "read2: offset=%d value=%08x: ", o, val ); |
| fflush(stdout); |
| |
| v2 = *(unsigned short*)(tab+o); |
| |
| if (v2 != val) { |
| printf( "FAIL (%04x)\n", v2 ); |
| } else { |
| printf( "ok\n" ); |
| } |
| } |
| |
| static void |
| writ2( int o, unsigned val ) |
| { |
| unsigned short v = htons(val); |
| unsigned short v2; |
| |
| printf( "writ2: offset=%d value=%08x: ", o, val ); |
| fflush(stdout); |
| |
| *(unsigned short*)(tab+o) = v; |
| |
| v2 = ((unsigned)tab[o+0] << 8) | |
| ((unsigned)tab[o+1] ); |
| |
| if (v2 != val) { |
| printf( "FAIL (%08x)\n", v2 ); |
| } else { |
| printf( "ok\n" ); |
| } |
| } |
| |
| |
| |
| int main(void) |
| { |
| read4( 0, 0x12345678 ); |
| writ4( 0, 0x12345678 ); |
| read4( 1, 0x12345678 ); |
| writ4( 1, 0x12345678 ); |
| read4( 2, 0x12345678 ); |
| writ4( 2, 0x12345678 ); |
| read4( 3, 0x12345678 ); |
| writ4( 3, 0x12345678 ); |
| |
| read2( 0, 0x1234 ); |
| writ2( 0, 0x1234 ); |
| read2( 1, 0x1234 ); |
| writ2( 1, 0x1234 ); |
| read2( 2, 0x1234 ); |
| writ2( 2, 0x1234 ); |
| read2( 3, 0x1234 ); |
| writ2( 3, 0x1234 ); |
| |
| return 0; |
| } |