hc
2024-05-10 10ebd8556b7990499c896a550e3d416b444211e6
kernel/arch/powerpc/kernel/fpu.S
....@@ -1,3 +1,4 @@
1
+/* SPDX-License-Identifier: GPL-2.0-or-later */
12 /*
23 * FPU support code, moved here from head.S so that it can be used
34 * by chips which use other head-whatever.S files.
....@@ -6,18 +7,11 @@
67 * Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
78 * Copyright (C) 1996 Paul Mackerras.
89 * Copyright (C) 1997 Dan Malek (dmalek@jlc.net).
9
- *
10
- * This program is free software; you can redistribute it and/or
11
- * modify it under the terms of the GNU General Public License
12
- * as published by the Free Software Foundation; either version
13
- * 2 of the License, or (at your option) any later version.
14
- *
1510 */
1611
1712 #include <asm/reg.h>
1813 #include <asm/page.h>
1914 #include <asm/mmu.h>
20
-#include <asm/pgtable.h>
2115 #include <asm/cputable.h>
2216 #include <asm/cache.h>
2317 #include <asm/thread_info.h>
....@@ -63,6 +57,7 @@
6357 REST_32FPVSRS(0, R4, R3)
6458 blr
6559 EXPORT_SYMBOL(load_fp_state)
60
+_ASM_NOKPROBE_SYMBOL(load_fp_state); /* used by restore_math */
6661
6762 /*
6863 * Store FP state into memory, including FPSCR
....@@ -92,12 +87,14 @@
9287 oris r5,r5,MSR_VSX@h
9388 END_FTR_SECTION_IFSET(CPU_FTR_VSX)
9489 #endif
95
- SYNC
9690 MTMSRD(r5) /* enable use of fpu now */
9791 isync
9892 /* enable use of FP after return */
9993 #ifdef CONFIG_PPC32
10094 mfspr r5,SPRN_SPRG_THREAD /* current task's THREAD (phys) */
95
+#ifdef CONFIG_VMAP_STACK
96
+ tovirt(r5, r5)
97
+#endif
10198 lwz r4,THREAD_FPEXC_MODE(r5)
10299 ori r9,r9,MSR_FP /* enable FP for current */
103100 or r9,r9,r4
....@@ -109,9 +106,7 @@
109106 or r12,r12,r4
110107 std r12,_MSR(r1)
111108 #endif
112
- /* Don't care if r4 overflows, this is desired behaviour */
113
- lbz r4,THREAD_LOAD_FP(r5)
114
- addi r4,r4,1
109
+ li r4,1
115110 stb r4,THREAD_LOAD_FP(r5)
116111 addi r10,r5,THREAD_FPSTATE
117112 lfd fr0,FPSTATE_FPSCR(r10)
....@@ -120,6 +115,7 @@
120115 /* restore registers and return */
121116 /* we haven't used ctr or xer or lr */
122117 blr
118
+_ASM_NOKPROBE_SYMBOL(load_up_fpu)
123119
124120 /*
125121 * save_fpu(tsk)
....@@ -136,19 +132,4 @@
136132 2: SAVE_32FPVSRS(0, R4, R6)
137133 mffs fr0
138134 stfd fr0,FPSTATE_FPSCR(r6)
139
- blr
140
-
141
-/*
142
- * These are used in the alignment trap handler when emulating
143
- * single-precision loads and stores.
144
- */
145
-
146
-_GLOBAL(cvt_fd)
147
- lfs 0,0(r3)
148
- stfd 0,0(r4)
149
- blr
150
-
151
-_GLOBAL(cvt_df)
152
- lfd 0,0(r3)
153
- stfs 0,0(r4)
154135 blr