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