diff options
Diffstat (limited to 'arch/m68k/include/asm/segment.h')
| -rw-r--r-- | arch/m68k/include/asm/segment.h | 30 | 
1 files changed, 16 insertions, 14 deletions
diff --git a/arch/m68k/include/asm/segment.h b/arch/m68k/include/asm/segment.h index ee959219fdfe..0fa80e97ed2d 100644 --- a/arch/m68k/include/asm/segment.h +++ b/arch/m68k/include/asm/segment.h @@ -22,23 +22,26 @@ typedef struct {  } mm_segment_t;  #define MAKE_MM_SEG(s)	((mm_segment_t) { (s) }) -#define USER_DS		MAKE_MM_SEG(__USER_DS) -#define KERNEL_DS	MAKE_MM_SEG(__KERNEL_DS) +#ifdef CONFIG_CPU_HAS_ADDRESS_SPACES  /*   * Get/set the SFC/DFC registers for MOVES instructions   */ +#define USER_DS		MAKE_MM_SEG(__USER_DS) +#define KERNEL_DS	MAKE_MM_SEG(__KERNEL_DS)  static inline mm_segment_t get_fs(void)  { -#ifdef CONFIG_MMU  	mm_segment_t _v;  	__asm__ ("movec %/dfc,%0":"=r" (_v.seg):); -  	return _v; -#else -	return USER_DS; -#endif +} + +static inline void set_fs(mm_segment_t val) +{ +	__asm__ __volatile__ ("movec %0,%/sfc\n\t" +			      "movec %0,%/dfc\n\t" +			      : /* no outputs */ : "r" (val.seg) : "memory");  }  static inline mm_segment_t get_ds(void) @@ -47,14 +50,13 @@ static inline mm_segment_t get_ds(void)      return KERNEL_DS;  } -static inline void set_fs(mm_segment_t val) -{ -#ifdef CONFIG_MMU -	__asm__ __volatile__ ("movec %0,%/sfc\n\t" -			      "movec %0,%/dfc\n\t" -			      : /* no outputs */ : "r" (val.seg) : "memory"); +#else +#define USER_DS		MAKE_MM_SEG(TASK_SIZE) +#define KERNEL_DS	MAKE_MM_SEG(0xFFFFFFFF) +#define get_ds()	(KERNEL_DS) +#define get_fs()	(current_thread_info()->addr_limit) +#define set_fs(x)	(current_thread_info()->addr_limit = (x))  #endif -}  #define segment_eq(a,b)	((a).seg == (b).seg)  |