#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;
}