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