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 36static inline mm_segment_t get_ds(void) 37{ 38 /* return the supervisor data space code */ 39 return KERNEL_DS; 40} 41 42#define segment_eq(a, b) ((a).seg == (b).seg) 43 44#endif /* __ASSEMBLY__ */ 45 46#endif /* _H8300_SEGMENT_H */ 47