test_aligned.c revision e16cb84e2324f05334d18dcf5956f20f44262b62
1#include <stdio.h> 2#include <arpa/inet.h> /* for htons() etc.. */ 3 4static char tab[8]; 5 6static void 7read4( 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 29static void 30writ4( 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 52static void 53read2( 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 73static void 74writ2( 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 96int 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