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 19typedef 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 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