1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/test/sh4/mmummio.c Wed Dec 21 17:13:08 2011 +1000
1.8 +#define PTEH 0xFF000000
1.9 +#define PTEL 0xFF000004
1.10 +#define TTB 0xFF000008
1.11 +#define TEA 0xFF00000C
1.12 +#define MMUCR 0xFF000010
1.13 +#define PTEA 0xFF000034
1.15 +#define ITLB_ADDR(entry) (0xF2000000 + (entry<<8))
1.16 +#define ITLB_DATA(entry) (0xF3000000 + (entry<<8))
1.17 +#define UTLB_ADDR(entry) (0xF6000000 + (entry<<8))
1.18 +#define UTLB_DATA1(entry) (0xF7000000 + (entry<<8))
1.19 +#define UTLB_DATA2(entry) (0xF7800000 + (entry<<8))
1.21 +/* Bang on the mmio side of the TLBs to make sure the bits
1.22 + * respond appropriately (with AT disabled so we don't risk
1.23 + * doing a hard crash) */
1.24 +void test_tlb_mmio()
1.27 + for( entry=0; entry<64; entry++ ) {
1.28 + long_write( UTLB_DATA1(entry), 0 );
1.29 + long_write( UTLB_ADDR(entry), 0xFFFFFFFF );
1.30 + assert( long_read( UTLB_ADDR(entry) ) == 0xFFFFFFFF );
1.31 + assert( long_read( UTLB_DATA1(entry) ) == 0x00000104 );
1.32 + long_write( UTLB_ADDR(entry), 0x00000000 );
1.33 + assert( long_read( UTLB_ADDR(entry) ) == 0x00000000 );
1.34 + assert( long_read( UTLB_DATA1(entry) ) == 0x00000000 );
1.35 + long_write( UTLB_DATA1(entry), 0xFFFFFFFF );
1.36 + assert( long_read( UTLB_DATA1(entry) ) == 0x1FFFFDFF );
1.37 + assert( long_read( UTLB_ADDR(entry) ) == 0x00000300 );
1.38 + long_write( UTLB_DATA1(entry), 0x00000000 );
1.39 + assert( long_read( UTLB_DATA1(entry) ) == 0x00000000 );
1.40 + assert( long_read( UTLB_ADDR(entry) ) == 0x00000000 );
1.41 + long_write( UTLB_DATA2(entry), 0xFFFFFFFF );
1.42 + assert( long_read( UTLB_DATA2(entry) ) == 0x0000000F );
1.43 + long_write( UTLB_DATA2(entry), 0x00000000 );
1.44 + assert( long_read( UTLB_DATA2(entry) ) == 0x00000000 );
1.47 + for( entry=0; entry<4; entry++ ) {
1.48 + long_write( ITLB_DATA(entry), 0 );
1.49 + long_write( ITLB_ADDR(entry), 0xFFFFFFFF );
1.50 + assert( long_read( ITLB_ADDR(entry) ) == 0xFFFFFDFF );
1.51 + assert( long_read( ITLB_DATA(entry) ) == 0x00000100 );
1.52 + long_write( ITLB_ADDR(entry), 0x00000000 );
1.53 + assert( long_read( ITLB_ADDR(entry) ) == 0x00000000 );
1.54 + assert( long_read( ITLB_DATA(entry) ) == 0x00000000 );
1.55 + long_write( ITLB_DATA(entry), 0xFFFFFFFF );
1.56 + assert( long_read( ITLB_DATA(entry) ) == 0x1FFFFDDA );
1.57 + assert( long_read( ITLB_ADDR(entry) ) == 0x00000100 );
1.58 + long_write( ITLB_DATA(entry), 0x00000000 );
1.59 + assert( long_read( ITLB_DATA(entry) ) == 0x00000000 );
1.60 + assert( long_read( ITLB_ADDR(entry) ) == 0x00000000 );