@ -32,6 +32,29 @@
DECLARE_GLOBAL_DATA_PTR ;
void invalidate_tlb ( u8 tlb )
{
if ( tlb = = 0 )
mtspr ( MMUCSR0 , 0x4 ) ;
if ( tlb = = 1 )
mtspr ( MMUCSR0 , 0x2 ) ;
}
void init_tlbs ( void )
{
int i ;
for ( i = 0 ; i < num_tlb_entries ; i + + ) {
write_tlb ( tlb_table [ i ] . mas0 ,
tlb_table [ i ] . mas1 ,
tlb_table [ i ] . mas2 ,
tlb_table [ i ] . mas3 ,
tlb_table [ i ] . mas7 ) ;
}
return ;
}
void set_tlb ( u8 tlb , u32 epn , u64 rpn ,
u8 perms , u8 wimge ,
u8 ts , u8 esel , u8 tsize , u8 iprot )
@ -77,29 +100,6 @@ void disable_tlb(u8 esel)
# endif
}
void invalidate_tlb ( u8 tlb )
{
if ( tlb = = 0 )
mtspr ( MMUCSR0 , 0x4 ) ;
if ( tlb = = 1 )
mtspr ( MMUCSR0 , 0x2 ) ;
}
void init_tlbs ( void )
{
int i ;
for ( i = 0 ; i < num_tlb_entries ; i + + ) {
write_tlb ( tlb_table [ i ] . mas0 ,
tlb_table [ i ] . mas1 ,
tlb_table [ i ] . mas2 ,
tlb_table [ i ] . mas3 ,
tlb_table [ i ] . mas7 ) ;
}
return ;
}
static void tlbsx ( const volatile unsigned * addr )
{
__asm__ __volatile__ ( " tlbsx 0,%0 " : : " r " ( addr ) , " m " ( * addr ) ) ;