home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-s390 / mmu_context.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.5 KB  |  55 lines

  1. /*
  2.  *  include/asm-s390/mmu_context.h
  3.  *
  4.  *  S390 version
  5.  *
  6.  *  Derived from "include/asm-i386/mmu_context.h"
  7.  */
  8.  
  9. #ifndef __S390_MMU_CONTEXT_H
  10. #define __S390_MMU_CONTEXT_H
  11.  
  12. /*
  13.  * get a new mmu context.. S390 don't know about contexts.
  14.  */
  15. #define init_new_context(tsk,mm)        0
  16.  
  17. #define destroy_context(mm)             do { } while (0)
  18.  
  19. static inline void enter_lazy_tlb(struct mm_struct *mm,
  20.                                   struct task_struct *tsk)
  21. {
  22. }
  23.  
  24. static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next,
  25.                              struct task_struct *tsk)
  26. {
  27.         if (prev != next) {
  28. #ifndef __s390x__
  29.             S390_lowcore.user_asce = (__pa(next->pgd)&PAGE_MASK) |
  30.                       (_SEGMENT_TABLE|USER_STD_MASK);
  31.                 /* Load home space page table origin. */
  32.                 asm volatile("lctl  13,13,%0"
  33.                  : : "m" (S390_lowcore.user_asce) );
  34. #else /* __s390x__ */
  35.                 S390_lowcore.user_asce = (__pa(next->pgd) & PAGE_MASK) |
  36.             (_REGION_TABLE|USER_STD_MASK);
  37.         /* Load home space page table origin. */
  38.         asm volatile("lctlg  13,13,%0"
  39.                  : : "m" (S390_lowcore.user_asce) );
  40. #endif /* __s390x__ */
  41.         }
  42.     cpu_set(smp_processor_id(), next->cpu_vm_mask);
  43. }
  44.  
  45. #define deactivate_mm(tsk,mm)    do { } while (0)
  46.  
  47. static inline void activate_mm(struct mm_struct *prev,
  48.                                struct mm_struct *next)
  49. {
  50.         switch_mm(prev, next, current);
  51.     set_fs(current->thread.mm_segment);
  52. }
  53.  
  54. #endif
  55.