-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
m68k: merge the mmu and non-mmu versions of segment.h
Trivial merge of the mmu and non-mmu version of segment.h. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
- Loading branch information
Greg Ungerer
committed
Mar 24, 2009
1 parent
872065e
commit 4892242
Showing
3 changed files
with
61 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,63 @@ | ||
#ifdef __uClinux__ | ||
#include "segment_no.h" | ||
#ifndef _M68K_SEGMENT_H | ||
#define _M68K_SEGMENT_H | ||
|
||
/* define constants */ | ||
/* Address spaces (FC0-FC2) */ | ||
#define USER_DATA (1) | ||
#ifndef __USER_DS | ||
#define __USER_DS (USER_DATA) | ||
#endif | ||
#define USER_PROGRAM (2) | ||
#define SUPER_DATA (5) | ||
#ifndef __KERNEL_DS | ||
#define __KERNEL_DS (SUPER_DATA) | ||
#endif | ||
#define SUPER_PROGRAM (6) | ||
#define CPU_SPACE (7) | ||
|
||
#ifndef __ASSEMBLY__ | ||
|
||
typedef struct { | ||
unsigned long seg; | ||
} 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) | ||
|
||
/* | ||
* Get/set the SFC/DFC registers for MOVES instructions | ||
*/ | ||
|
||
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 | ||
#include "segment_mm.h" | ||
return USER_DS; | ||
#endif | ||
} | ||
|
||
static inline mm_segment_t get_ds(void) | ||
{ | ||
/* return the supervisor data space code */ | ||
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"); | ||
#endif | ||
} | ||
|
||
#define segment_eq(a,b) ((a).seg == (b).seg) | ||
|
||
#endif /* __ASSEMBLY__ */ | ||
|
||
#endif /* _M68K_SEGMENT_H */ |
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.