diff options
Diffstat (limited to 'arch/arm64/kernel/entry-fpsimd.S')
-rw-r--r-- | arch/arm64/kernel/entry-fpsimd.S | 43 |
1 files changed, 3 insertions, 40 deletions
diff --git a/arch/arm64/kernel/entry-fpsimd.S b/arch/arm64/kernel/entry-fpsimd.S index 17988a6e7ea2..6a27cd6dbfa6 100644 --- a/arch/arm64/kernel/entry-fpsimd.S +++ b/arch/arm64/kernel/entry-fpsimd.S | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/linkage.h> | 20 | #include <linux/linkage.h> |
21 | 21 | ||
22 | #include <asm/assembler.h> | 22 | #include <asm/assembler.h> |
23 | #include <asm/fpsimdmacros.h> | ||
23 | 24 | ||
24 | /* | 25 | /* |
25 | * Save the FP registers. | 26 | * Save the FP registers. |
@@ -27,26 +28,7 @@ | |||
27 | * x0 - pointer to struct fpsimd_state | 28 | * x0 - pointer to struct fpsimd_state |
28 | */ | 29 | */ |
29 | ENTRY(fpsimd_save_state) | 30 | ENTRY(fpsimd_save_state) |
30 | stp q0, q1, [x0, #16 * 0] | 31 | fpsimd_save x0, 8 |
31 | stp q2, q3, [x0, #16 * 2] | ||
32 | stp q4, q5, [x0, #16 * 4] | ||
33 | stp q6, q7, [x0, #16 * 6] | ||
34 | stp q8, q9, [x0, #16 * 8] | ||
35 | stp q10, q11, [x0, #16 * 10] | ||
36 | stp q12, q13, [x0, #16 * 12] | ||
37 | stp q14, q15, [x0, #16 * 14] | ||
38 | stp q16, q17, [x0, #16 * 16] | ||
39 | stp q18, q19, [x0, #16 * 18] | ||
40 | stp q20, q21, [x0, #16 * 20] | ||
41 | stp q22, q23, [x0, #16 * 22] | ||
42 | stp q24, q25, [x0, #16 * 24] | ||
43 | stp q26, q27, [x0, #16 * 26] | ||
44 | stp q28, q29, [x0, #16 * 28] | ||
45 | stp q30, q31, [x0, #16 * 30]! | ||
46 | mrs x8, fpsr | ||
47 | str w8, [x0, #16 * 2] | ||
48 | mrs x8, fpcr | ||
49 | str w8, [x0, #16 * 2 + 4] | ||
50 | ret | 32 | ret |
51 | ENDPROC(fpsimd_save_state) | 33 | ENDPROC(fpsimd_save_state) |
52 | 34 | ||
@@ -56,25 +38,6 @@ ENDPROC(fpsimd_save_state) | |||
56 | * x0 - pointer to struct fpsimd_state | 38 | * x0 - pointer to struct fpsimd_state |
57 | */ | 39 | */ |
58 | ENTRY(fpsimd_load_state) | 40 | ENTRY(fpsimd_load_state) |
59 | ldp q0, q1, [x0, #16 * 0] | 41 | fpsimd_restore x0, 8 |
60 | ldp q2, q3, [x0, #16 * 2] | ||
61 | ldp q4, q5, [x0, #16 * 4] | ||
62 | ldp q6, q7, [x0, #16 * 6] | ||
63 | ldp q8, q9, [x0, #16 * 8] | ||
64 | ldp q10, q11, [x0, #16 * 10] | ||
65 | ldp q12, q13, [x0, #16 * 12] | ||
66 | ldp q14, q15, [x0, #16 * 14] | ||
67 | ldp q16, q17, [x0, #16 * 16] | ||
68 | ldp q18, q19, [x0, #16 * 18] | ||
69 | ldp q20, q21, [x0, #16 * 20] | ||
70 | ldp q22, q23, [x0, #16 * 22] | ||
71 | ldp q24, q25, [x0, #16 * 24] | ||
72 | ldp q26, q27, [x0, #16 * 26] | ||
73 | ldp q28, q29, [x0, #16 * 28] | ||
74 | ldp q30, q31, [x0, #16 * 30]! | ||
75 | ldr w8, [x0, #16 * 2] | ||
76 | ldr w9, [x0, #16 * 2 + 4] | ||
77 | msr fpsr, x8 | ||
78 | msr fpcr, x9 | ||
79 | ret | 42 | ret |
80 | ENDPROC(fpsimd_load_state) | 43 | ENDPROC(fpsimd_load_state) |