diff options
author | Kyle McMartin <kyle@treachery.i.cabal.ca> | 2008-12-22 12:29:02 -0500 |
---|---|---|
committer | Kyle McMartin <kyle@mcmartin.ca> | 2009-01-05 18:15:25 +0000 |
commit | a60715f58907d4e1db7be6c31fa050c993e119b5 (patch) | |
tree | 3f625f4fd943d9f11e44abd55ff78b2d59b01d2d | |
parent | 0ca5506da6795ebc700fd41cef2a7785613fbe28 (diff) | |
download | op-kernel-dev-a60715f58907d4e1db7be6c31fa050c993e119b5.zip op-kernel-dev-a60715f58907d4e1db7be6c31fa050c993e119b5.tar.gz |
parisc: factor out sid to protid conversion
Create a new __space_to_prot inline to convert the space id (mmu context)
to a protection id. Sadly it doesn't look like the #ifdef can be eliminated
since relying on the compiler to not truncate a bit on
return (ctx >> SPACEID_SHIFT) << 1;
seems a little dodgy.
Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
-rw-r--r-- | arch/parisc/include/asm/mmu_context.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/parisc/include/asm/mmu_context.h b/arch/parisc/include/asm/mmu_context.h index 85856c7..9302897 100644 --- a/arch/parisc/include/asm/mmu_context.h +++ b/arch/parisc/include/asm/mmu_context.h @@ -34,16 +34,21 @@ destroy_context(struct mm_struct *mm) mm->context = 0; } -static inline void load_context(mm_context_t context) +static inline unsigned long __space_to_prot(mm_context_t ctx) { - mtsp(context, 3); #if SPACEID_SHIFT == 0 - mtctl(context << 1,8); + return context << 1; #else - mtctl(context >> (SPACEID_SHIFT - 1),8); + return context >> (SPACEID_SHIFT - 1); #endif } +static inline void load_context(mm_context_t context) +{ + mtsp(context, 3); + mtctl(__space_to_prot(context), 8); +} + static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, struct task_struct *tsk) { |