1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _H8300_SEGMENT_H 3 #define _H8300_SEGMENT_H 4 5 /* define constants */ 6 #define USER_DATA (1) 7 #ifndef __USER_DS 8 #define __USER_DS (USER_DATA) 9 #endif 10 #define USER_PROGRAM (2) 11 #define SUPER_DATA (3) 12 #ifndef __KERNEL_DS 13 #define __KERNEL_DS (SUPER_DATA) 14 #endif 15 #define SUPER_PROGRAM (4) 16 17 #ifndef __ASSEMBLY__ 18 19 typedef struct { 20 unsigned long seg; 21 } mm_segment_t; 22 23 #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) }) 24 #define USER_DS MAKE_MM_SEG(__USER_DS) 25 #define KERNEL_DS MAKE_MM_SEG(__KERNEL_DS) 26 27 /* 28 * Get/set the SFC/DFC registers for MOVES instructions 29 */ 30 get_fs(void)31static inline mm_segment_t get_fs(void) 32 { 33 return USER_DS; 34 } 35 36 #define uaccess_kernel() (get_fs().seg == KERNEL_DS.seg) 37 38 #endif /* __ASSEMBLY__ */ 39 40 #endif /* _H8300_SEGMENT_H */ 41