50 lines
		
	
	
		
			904 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			904 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _H8300_SEGMENT_H
 | |
| #define _H8300_SEGMENT_H
 | |
| 
 | |
| /* define constants */
 | |
| #define USER_DATA     (1)
 | |
| #ifndef __USER_DS
 | |
| #define __USER_DS     (USER_DATA)
 | |
| #endif
 | |
| #define USER_PROGRAM  (2)
 | |
| #define SUPER_DATA    (3)
 | |
| #ifndef __KERNEL_DS
 | |
| #define __KERNEL_DS   (SUPER_DATA)
 | |
| #endif
 | |
| #define SUPER_PROGRAM (4)
 | |
| 
 | |
| #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)
 | |
| {
 | |
|     return USER_DS;
 | |
| }
 | |
| 
 | |
| 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)
 | |
| {
 | |
| }
 | |
| 
 | |
| #define segment_eq(a,b)	((a).seg == (b).seg)
 | |
| 
 | |
| #endif /* __ASSEMBLY__ */
 | |
| 
 | |
| #endif /* _H8300_SEGMENT_H */
 |