hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/arch/powerpc/include/asm/exception-64e.h
....@@ -1,12 +1,8 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /*
23 * Definitions for use by exception code on Book3-E
34 *
45 * Copyright (C) 2008 Ben. Herrenschmidt (benh@kernel.crashing.org), IBM Corp.
5
- *
6
- * This program is free software; you can redistribute it and/or
7
- * modify it under the terms of the GNU General Public License
8
- * as published by the Free Software Foundation; either version
9
- * 2 of the License, or (at your option) any later version.
106 */
117 #ifndef _ASM_POWERPC_EXCEPTION_64E_H
128 #define _ASM_POWERPC_EXCEPTION_64E_H
....@@ -70,14 +66,7 @@
7066 #define EX_TLB_SRR0 (10 * 8)
7167 #define EX_TLB_SRR1 (11 * 8)
7268 #define EX_TLB_R7 (12 * 8)
73
-#ifdef CONFIG_BOOK3E_MMU_TLB_STATS
74
-#define EX_TLB_R8 (13 * 8)
75
-#define EX_TLB_R9 (14 * 8)
76
-#define EX_TLB_LR (15 * 8)
77
-#define EX_TLB_SIZE (16 * 8)
78
-#else
7969 #define EX_TLB_SIZE (13 * 8)
80
-#endif
8170
8271 #define START_EXCEPTION(label) \
8372 .globl exc_##label##_book3e; \
....@@ -114,8 +103,7 @@
114103 std r11,EX_TLB_R12(r12); \
115104 mtspr SPRN_SPRG_TLB_EXFRAME,r14; \
116105 std r15,EX_TLB_SRR1(r12); \
117
- std r16,EX_TLB_SRR0(r12); \
118
- TLB_MISS_PROLOG_STATS
106
+ std r16,EX_TLB_SRR0(r12);
119107
120108 /* And these are the matching epilogs that restores things
121109 *
....@@ -147,7 +135,6 @@
147135 mtspr SPRN_SRR0,r15; \
148136 ld r15,EX_TLB_R15(r12); \
149137 mtspr SPRN_SRR1,r16; \
150
- TLB_MISS_RESTORE_STATS \
151138 ld r16,EX_TLB_R16(r12); \
152139 ld r12,EX_TLB_R12(r12); \
153140
....@@ -162,53 +149,15 @@
162149 addi r11,r13,PACA_EXTLB; \
163150 TLB_MISS_RESTORE(r11)
164151
165
-#ifdef CONFIG_BOOK3E_MMU_TLB_STATS
166
-#define TLB_MISS_PROLOG_STATS \
167
- mflr r10; \
168
- std r8,EX_TLB_R8(r12); \
169
- std r9,EX_TLB_R9(r12); \
170
- std r10,EX_TLB_LR(r12);
171
-#define TLB_MISS_RESTORE_STATS \
172
- ld r16,EX_TLB_LR(r12); \
173
- ld r9,EX_TLB_R9(r12); \
174
- ld r8,EX_TLB_R8(r12); \
175
- mtlr r16;
176
-#define TLB_MISS_STATS_D(name) \
177
- addi r9,r13,MMSTAT_DSTATS+name; \
178
- bl tlb_stat_inc;
179
-#define TLB_MISS_STATS_I(name) \
180
- addi r9,r13,MMSTAT_ISTATS+name; \
181
- bl tlb_stat_inc;
182
-#define TLB_MISS_STATS_X(name) \
183
- ld r8,PACA_EXTLB+EX_TLB_ESR(r13); \
184
- cmpdi cr2,r8,-1; \
185
- beq cr2,61f; \
186
- addi r9,r13,MMSTAT_DSTATS+name; \
187
- b 62f; \
188
-61: addi r9,r13,MMSTAT_ISTATS+name; \
189
-62: bl tlb_stat_inc;
190
-#define TLB_MISS_STATS_SAVE_INFO \
191
- std r14,EX_TLB_ESR(r12); /* save ESR */
192
-#define TLB_MISS_STATS_SAVE_INFO_BOLTED \
193
- std r14,PACA_EXTLB+EX_TLB_ESR(r13); /* save ESR */
194
-#else
195
-#define TLB_MISS_PROLOG_STATS
196
-#define TLB_MISS_RESTORE_STATS
197
-#define TLB_MISS_PROLOG_STATS_BOLTED
198
-#define TLB_MISS_RESTORE_STATS_BOLTED
199
-#define TLB_MISS_STATS_D(name)
200
-#define TLB_MISS_STATS_I(name)
201
-#define TLB_MISS_STATS_X(name)
202
-#define TLB_MISS_STATS_Y(name)
203
-#define TLB_MISS_STATS_SAVE_INFO
204
-#define TLB_MISS_STATS_SAVE_INFO_BOLTED
205
-#endif
206
-
207152 #define SET_IVOR(vector_number, vector_offset) \
208153 LOAD_REG_ADDR(r3,interrupt_base_book3e);\
209154 ori r3,r3,vector_offset@l; \
210155 mtspr SPRN_IVOR##vector_number,r3;
211
-
156
+/*
157
+ * powerpc relies on return from interrupt/syscall being context synchronising
158
+ * (which rfi is) to support ARCH_HAS_MEMBARRIER_SYNC_CORE without additional
159
+ * synchronisation instructions.
160
+ */
212161 #define RFI_TO_KERNEL \
213162 rfi
214163