1 #include <stdio.h> 2 #include <arpa/inet.h> /* for htons() etc.. */ 3 4 static char tab[8]; 5 6 static void 7 read4( int o, unsigned val ) 8 { 9 unsigned v = htonl(val); 10 unsigned v2; 11 12 tab[o+0] = (char)(v >> 24); 13 tab[o+1] = (char)(v >> 16); 14 tab[o+2] = (char)(v >> 8); 15 tab[o+3] = (char)(v); 16 17 printf( "read4: offset=%d value=%08x: ", o, val ); 18 fflush(stdout); 19 20 v2 = *(unsigned*)(tab+o); 21 22 if (v2 != val) { 23 printf( "FAIL (%08x)\n", v2 ); 24 } else { 25 printf( "ok\n" ); 26 } 27 } 28 29 static void 30 writ4( int o, unsigned val ) 31 { 32 unsigned v = htonl(val); 33 unsigned v2; 34 35 printf( "writ4: offset=%d value=%08x: ", o, val ); 36 fflush(stdout); 37 38 *(unsigned*)(tab+o) = v; 39 40 v2 = ((unsigned)tab[o+0] << 24) | 41 ((unsigned)tab[o+1] << 16) | 42 ((unsigned)tab[o+2] << 8 ) | 43 ((unsigned)tab[o+3] ); 44 45 if (v2 != val) { 46 printf( "FAIL (%08x)\n", v2 ); 47 } else { 48 printf( "ok\n" ); 49 } 50 } 51 52 static void 53 read2( int o, unsigned val ) 54 { 55 unsigned short v = htons(val); 56 unsigned short v2; 57 58 tab[o+0] = (char)(v >> 8); 59 tab[o+1] = (char)(v); 60 61 printf( "read2: offset=%d value=%08x: ", o, val ); 62 fflush(stdout); 63 64 v2 = *(unsigned short*)(tab+o); 65 66 if (v2 != val) { 67 printf( "FAIL (%04x)\n", v2 ); 68 } else { 69 printf( "ok\n" ); 70 } 71 } 72 73 static void 74 writ2( int o, unsigned val ) 75 { 76 unsigned short v = htons(val); 77 unsigned short v2; 78 79 printf( "writ2: offset=%d value=%08x: ", o, val ); 80 fflush(stdout); 81 82 *(unsigned short*)(tab+o) = v; 83 84 v2 = ((unsigned)tab[o+0] << 8) | 85 ((unsigned)tab[o+1] ); 86 87 if (v2 != val) { 88 printf( "FAIL (%08x)\n", v2 ); 89 } else { 90 printf( "ok\n" ); 91 } 92 } 93 94 95 96 int main(void) 97 { 98 read4( 0, 0x12345678 ); 99 writ4( 0, 0x12345678 ); 100 read4( 1, 0x12345678 ); 101 writ4( 1, 0x12345678 ); 102 read4( 2, 0x12345678 ); 103 writ4( 2, 0x12345678 ); 104 read4( 3, 0x12345678 ); 105 writ4( 3, 0x12345678 ); 106 107 read2( 0, 0x1234 ); 108 writ2( 0, 0x1234 ); 109 read2( 1, 0x1234 ); 110 writ2( 1, 0x1234 ); 111 read2( 2, 0x1234 ); 112 writ2( 2, 0x1234 ); 113 read2( 3, 0x1234 ); 114 writ2( 3, 0x1234 ); 115 116 return 0; 117 } 118