diff options
| author | Sam Ravnborg <sam@ravnborg.org> | 2012-05-25 21:20:17 +0000 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2012-05-27 23:52:49 -0700 | 
| commit | 6729cf7967f6c11f6de6a0b43ec277905a00c146 (patch) | |
| tree | 7e0b3a10176185c302f5ebc7d6e7f8a0d74eb00c /arch/sparc/include/asm | |
| parent | 1ec8cf62338b950fdbf76bbdfa3064bc1c0b7a81 (diff) | |
| download | linux-6729cf7967f6c11f6de6a0b43ec277905a00c146.tar.bz2 | |
sparc32: introduce run-time patching of srmmu access functions
LEON uses a different ASI than SUN for MMUREGS
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Daniel Hellstrom <daniel@gaisler.com>
Cc: Konrad Eisele <konrad@gaisler.com>
Diffstat (limited to 'arch/sparc/include/asm')
| -rw-r--r-- | arch/sparc/include/asm/pgtsrmmu.h | 68 | 
1 files changed, 7 insertions, 61 deletions
diff --git a/arch/sparc/include/asm/pgtsrmmu.h b/arch/sparc/include/asm/pgtsrmmu.h index 394fe25e79d1..72f71214ef87 100644 --- a/arch/sparc/include/asm/pgtsrmmu.h +++ b/arch/sparc/include/asm/pgtsrmmu.h @@ -149,67 +149,13 @@ extern void *srmmu_nocache_pool;  #define __nocache_fix(VADDR) __va(__nocache_pa(VADDR))  /* Accessing the MMU control register. */ -static inline unsigned int srmmu_get_mmureg(void) -{ -        unsigned int retval; -	__asm__ __volatile__("lda [%%g0] %1, %0\n\t" : -			     "=r" (retval) : -			     "i" (ASI_M_MMUREGS)); -	return retval; -} - -static inline void srmmu_set_mmureg(unsigned long regval) -{ -	__asm__ __volatile__("sta %0, [%%g0] %1\n\t" : : -			     "r" (regval), "i" (ASI_M_MMUREGS) : "memory"); - -} - -static inline void srmmu_set_ctable_ptr(unsigned long paddr) -{ -	paddr = ((paddr >> 4) & SRMMU_CTX_PMASK); -	__asm__ __volatile__("sta %0, [%1] %2\n\t" : : -			     "r" (paddr), "r" (SRMMU_CTXTBL_PTR), -			     "i" (ASI_M_MMUREGS) : -			     "memory"); -} - -static inline void srmmu_set_context(int context) -{ -	__asm__ __volatile__("sta %0, [%1] %2\n\t" : : -			     "r" (context), "r" (SRMMU_CTX_REG), -			     "i" (ASI_M_MMUREGS) : "memory"); -} - -static inline int srmmu_get_context(void) -{ -	register int retval; -	__asm__ __volatile__("lda [%1] %2, %0\n\t" : -			     "=r" (retval) : -			     "r" (SRMMU_CTX_REG), -			     "i" (ASI_M_MMUREGS)); -	return retval; -} - -static inline unsigned int srmmu_get_fstatus(void) -{ -	unsigned int retval; - -	__asm__ __volatile__("lda [%1] %2, %0\n\t" : -			     "=r" (retval) : -			     "r" (SRMMU_FAULT_STATUS), "i" (ASI_M_MMUREGS)); -	return retval; -} - -static inline unsigned int srmmu_get_faddr(void) -{ -	unsigned int retval; - -	__asm__ __volatile__("lda [%1] %2, %0\n\t" : -			     "=r" (retval) : -			     "r" (SRMMU_FAULT_ADDR), "i" (ASI_M_MMUREGS)); -	return retval; -} +unsigned int srmmu_get_mmureg(void); +void srmmu_set_mmureg(unsigned long regval); +void srmmu_set_ctable_ptr(unsigned long paddr); +void srmmu_set_context(int context); +int srmmu_get_context(void); +unsigned int srmmu_get_fstatus(void); +unsigned int srmmu_get_faddr(void);  /* This is guaranteed on all SRMMU's. */  static inline void srmmu_flush_whole_tlb(void)  |