4 void debug_dump_buffer(char *buf, int length)
7 for( i=0; i<length; i+=16 ) {
9 for( j=0; j<16 && i+j < length; j+=4 ) {
10 unsigned int val = *((volatile unsigned int *)(buf+i+j));
11 printf( "%02X %02X %02X %02X ", val&0xFF, (val>>8)&0xFF, (val>>16)&0xFF, (val>>24)&0xFF );
13 for( j=0; j<16 && i+j < length; j++ ) {
14 printf( "%c", isprint(buf[i+j]) ? buf[i+j] : '.' );
20 void debug_dump_int_buffer(volatile char *buf, int length)
23 for( i=0; i<length; i+=16 ) {
25 for( j=0; j<16 && i+j < length; j+=4 ) {
26 printf( " %08X", *((volatile unsigned int *)(buf+i+j)) );
33 char buf[2048*7 + 32];
35 int test_ide_read_bootstrap()
37 struct gdrom_session session;
43 if( ide_test_ready() != 0 ) {
44 printf( "ERROR - Test ready failed\n" );
48 if( ide_spinup() != 0 ) {
49 printf( "ERROR - Spinup failed\n" );
54 length = ide_unknown71( buf, sizeof(buf) );
56 printf( "ERROR - 0x71 failed\n" );
57 ide_print_sense_error();
60 debug_dump_buffer(buf,length);
62 if( ide_get_session( 0, &session ) == -1 ) {
63 printf( "ERROR - Get session(0) failed\n" );
66 if( ide_get_session( session.track, &session ) == -1 ) {
67 printf( "ERROR - Get session(%d) failed\n", session.track );
71 p = (char *)((((unsigned int)buf) & 0xFFFFFFE0) + 0x20);
72 printf( "--- DMA buffer: %08X\n", p );
73 length = ide_read_sector_dma( session.lba, 2, 0x28, p, 2048*2 );
74 if( length != 2048*2 ) {
75 printf( "ERROR - Got incorrect read length, expected %d but was %d\n", 2048, length );
78 debug_dump_buffer( p, 2048*2 );
84 int main( int argc, char *argv[] )
89 // test_ide_read_bootstrap();
.