18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci *
38c2ecf20Sopenharmony_ci * include/asm-sh/cpu-sh4/mmu_context.h
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 1999 Niibe Yutaka
68c2ecf20Sopenharmony_ci */
78c2ecf20Sopenharmony_ci#ifndef __ASM_CPU_SH4_MMU_CONTEXT_H
88c2ecf20Sopenharmony_ci#define __ASM_CPU_SH4_MMU_CONTEXT_H
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ci#define MMU_PTEH	0xFF000000	/* Page table entry register HIGH */
118c2ecf20Sopenharmony_ci#define MMU_PTEL	0xFF000004	/* Page table entry register LOW */
128c2ecf20Sopenharmony_ci#define MMU_TTB		0xFF000008	/* Translation table base register */
138c2ecf20Sopenharmony_ci#define MMU_TEA		0xFF00000C	/* TLB Exception Address */
148c2ecf20Sopenharmony_ci#define MMU_PTEA	0xFF000034	/* PTE assistance register */
158c2ecf20Sopenharmony_ci#define MMU_PTEAEX	0xFF00007C	/* PTE ASID extension register */
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#define MMUCR		0xFF000010	/* MMU Control Register */
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci#define MMU_TLB_ENTRY_SHIFT	8
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci#define MMU_ITLB_ADDRESS_ARRAY  0xF2000000
228c2ecf20Sopenharmony_ci#define MMU_ITLB_ADDRESS_ARRAY2	0xF2800000
238c2ecf20Sopenharmony_ci#define MMU_ITLB_DATA_ARRAY	0xF3000000
248c2ecf20Sopenharmony_ci#define MMU_ITLB_DATA_ARRAY2	0xF3800000
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci#define MMU_UTLB_ADDRESS_ARRAY	0xF6000000
278c2ecf20Sopenharmony_ci#define MMU_UTLB_ADDRESS_ARRAY2	0xF6800000
288c2ecf20Sopenharmony_ci#define MMU_UTLB_DATA_ARRAY	0xF7000000
298c2ecf20Sopenharmony_ci#define MMU_UTLB_DATA_ARRAY2	0xF7800000
308c2ecf20Sopenharmony_ci#define MMU_PAGE_ASSOC_BIT	0x80
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci#ifdef CONFIG_MMU
338c2ecf20Sopenharmony_ci#define MMUCR_AT		(1 << 0)
348c2ecf20Sopenharmony_ci#else
358c2ecf20Sopenharmony_ci#define MMUCR_AT		(0)
368c2ecf20Sopenharmony_ci#endif
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci#define MMUCR_TI		(1 << 2)
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci#define MMUCR_URB		0x00FC0000
418c2ecf20Sopenharmony_ci#define MMUCR_URB_SHIFT		18
428c2ecf20Sopenharmony_ci#define MMUCR_URB_NENTRIES	64
438c2ecf20Sopenharmony_ci#define MMUCR_URC		0x0000FC00
448c2ecf20Sopenharmony_ci#define MMUCR_URC_SHIFT		10
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci#if defined(CONFIG_32BIT) && defined(CONFIG_CPU_SUBTYPE_ST40)
478c2ecf20Sopenharmony_ci#define MMUCR_SE		(1 << 4)
488c2ecf20Sopenharmony_ci#else
498c2ecf20Sopenharmony_ci#define MMUCR_SE		(0)
508c2ecf20Sopenharmony_ci#endif
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci#ifdef CONFIG_CPU_HAS_PTEAEX
538c2ecf20Sopenharmony_ci#define MMUCR_AEX		(1 << 6)
548c2ecf20Sopenharmony_ci#else
558c2ecf20Sopenharmony_ci#define MMUCR_AEX		(0)
568c2ecf20Sopenharmony_ci#endif
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci#ifdef CONFIG_X2TLB
598c2ecf20Sopenharmony_ci#define MMUCR_ME		(1 << 7)
608c2ecf20Sopenharmony_ci#else
618c2ecf20Sopenharmony_ci#define MMUCR_ME		(0)
628c2ecf20Sopenharmony_ci#endif
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci#ifdef CONFIG_SH_STORE_QUEUES
658c2ecf20Sopenharmony_ci#define MMUCR_SQMD		(1 << 9)
668c2ecf20Sopenharmony_ci#else
678c2ecf20Sopenharmony_ci#define MMUCR_SQMD		(0)
688c2ecf20Sopenharmony_ci#endif
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci#define MMU_NTLB_ENTRIES	64
718c2ecf20Sopenharmony_ci#define MMU_CONTROL_INIT	(MMUCR_AT | MMUCR_TI | MMUCR_SQMD | \
728c2ecf20Sopenharmony_ci				 MMUCR_ME | MMUCR_SE | MMUCR_AEX)
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci#define TRA	0xff000020
758c2ecf20Sopenharmony_ci#define EXPEVT	0xff000024
768c2ecf20Sopenharmony_ci#define INTEVT	0xff000028
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci#endif /* __ASM_CPU_SH4_MMU_CONTEXT_H */
798c2ecf20Sopenharmony_ci
80