blob: a407978f9f9fb8219f64f4561fbe80cfc91678e3 [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* 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
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000036#define segment_eq(a, b) ((a).seg == (b).seg)
37
38#endif /* __ASSEMBLY__ */
39
40#endif /* _H8300_SEGMENT_H */