xref: /kvm-unit-tests/lib/s390x/asm/page.h (revision 0c259cf369540df8fed7e64d63998f92574966b9)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2017 Red Hat Inc
4  *
5  * Authors:
6  *  Thomas Huth <thuth@redhat.com>
7  *  David Hildenbrand <david@redhat.com>
8  */
9 #ifndef _ASMS390X_PAGE_H_
10 #define _ASMS390X_PAGE_H_
11 
12 #include <asm-generic/page.h>
13 
14 typedef uint64_t pgdval_t;		/* Region-1 table entry */
15 typedef uint64_t p4dval_t;		/* Region-2 table entry*/
16 typedef uint64_t pudval_t;		/* Region-3 table entry */
17 typedef uint64_t pmdval_t;		/* Segment table entry */
18 typedef uint64_t pteval_t;		/* Page table entry */
19 
20 typedef struct { pgdval_t pgd; } pgd_t;
21 typedef struct { p4dval_t p4d; } p4d_t;
22 typedef struct { pudval_t pud; } pud_t;
23 typedef struct { pmdval_t pmd; } pmd_t;
24 typedef struct { pteval_t pte; } pte_t;
25 
26 #define pgd_val(x)	((x).pgd)
27 #define p4d_val(x)	((x).p4d)
28 #define pud_val(x)	((x).pud)
29 #define pmd_val(x)	((x).pmd)
30 #define pte_val(x)	((x).pte)
31 
32 #define __pgd(x)	((pgd_t) { (x) } )
33 #define __p4d(x)	((p4d_t) { (x) } )
34 #define __pud(x)	((pud_t) { (x) } )
35 #define __pmd(x)	((pmd_t) { (x) } )
36 #define __pte(x)	((pte_t) { (x) } )
37 
38 #define HPAGE_SHIFT		20
39 #define HPAGE_SIZE		(_AC(1,UL) << HPAGE_SHIFT)
40 #define HPAGE_MASK		(~(HPAGE_SIZE-1))
41 
42 #endif
43