1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef __ARM_MMU_H 3 #define __ARM_MMU_H 4 5 #ifdef CONFIG_MMU 6 7 typedef struct { 8 #ifdef CONFIG_CPU_HAS_ASID 9 atomic64_t id; 10 #else 11 int switch_pending; 12 #endif 13 atomic_t vmalloc_seq; 14 unsigned long sigpage; 15 #ifdef CONFIG_VDSO 16 unsigned long vdso; 17 #endif 18 #ifdef CONFIG_BINFMT_ELF_FDPIC 19 unsigned long exec_fdpic_loadmap; 20 unsigned long interp_fdpic_loadmap; 21 #endif 22 } mm_context_t; 23 24 #ifdef CONFIG_CPU_HAS_ASID 25 #define ASID_BITS 8 26 #define ASID_MASK ((~0ULL) << ASID_BITS) 27 #define ASID(mm) ((unsigned int)((mm)->context.id.counter & ~ASID_MASK)) 28 #else 29 #define ASID(mm) (0) 30 #endif 31 32 #else 33 34 /* 35 * From nommu.h: 36 * Copyright (C) 2002, David McCullough <davidm@snapgear.com> 37 * modified for 2.6 by Hyok S. Choi <hyok.choi@samsung.com> 38 */ 39 typedef struct { 40 unsigned long end_brk; 41 #ifdef CONFIG_BINFMT_ELF_FDPIC 42 unsigned long exec_fdpic_loadmap; 43 unsigned long interp_fdpic_loadmap; 44 #endif 45 } mm_context_t; 46 47 #endif 48 49 #endif 50