#include #include #include #if defined(__mips__) #define INSN_TYPE unsigned int #define INVAL_INSN 0x0000003f #else #error "Please fix this" #endif void write_to_code(void); void read_data(void); void write_data(void); void write_to_code(void) { extern int func_150(); /* picking a code page that should no longer be in the TLB */ INSN_TYPE *x = (INSN_TYPE *) func_150; *x = INVAL_INSN; printf("IF THIS PRINTS THE TEST FAILED\n"); } extern void call_all(void); #define PAGE_SIZE (4096) #define PAGES (128) #define SIZE (PAGE_SIZE * PAGES / sizeof(int)) #define NUM_REFS (2) unsigned int array[SIZE]; void write_data(void) { unsigned int refs = 0; unsigned int i = 0; for (refs = 0; refs < NUM_REFS-1; refs++) { for (i=0; i