|
8 | 8 |
|
9 | 9 | #include "../assembly.h" |
10 | 10 |
|
| 11 | +.set FEAT_SVE_BIT, 30 |
| 12 | +.set SVCR_PSTATE_SM_BIT, 0 |
11 | 13 |
|
12 | 14 | #if !defined(__APPLE__) |
13 | 15 | #define TPIDR2_SYMBOL SYMBOL_NAME(__aarch64_has_sme_and_tpidr2_el0) |
@@ -188,39 +190,20 @@ DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(__arm_get_current_vg) |
188 | 190 | .variant_pcs __arm_get_current_vg |
189 | 191 | BTI_C |
190 | 192 |
|
191 | | - stp x29, x30, [sp, #-16]! |
192 | | - .cfi_def_cfa_offset 16 |
193 | | - mov x29, sp |
194 | | - .cfi_def_cfa w29, 16 |
195 | | - .cfi_offset w30, -8 |
196 | | - .cfi_offset w29, -16 |
197 | 193 | adrp x17, CPU_FEATS_SYMBOL |
198 | 194 | ldr w17, [x17, CPU_FEATS_SYMBOL_OFFSET] |
199 | | - tbnz w17, #30, 0f |
200 | | - adrp x16, TPIDR2_SYMBOL |
201 | | - ldrb w16, [x16, TPIDR2_SYMBOL_OFFSET] |
202 | | - cbz w16, 1f |
| 195 | + tbnz w17, #FEAT_SVE_BIT, 1f |
| 196 | + adrp x17, TPIDR2_SYMBOL |
| 197 | + ldrb w17, [x17, TPIDR2_SYMBOL_OFFSET] |
| 198 | + cbz x17, 2f |
203 | 199 | 0: |
204 | | - mov x18, x1 |
205 | | - bl __arm_sme_state |
206 | | - mov x1, x18 |
207 | | - and x17, x17, #0x40000000 |
208 | | - bfxil x17, x0, #0, #1 |
209 | | - cbz x17, 1f |
| 200 | + mrs x17, SVCR |
| 201 | + tbz x17, #SVCR_PSTATE_SM_BIT, 2f |
| 202 | +1: |
210 | 203 | cntd x0 |
211 | | - .cfi_def_cfa wsp, 16 |
212 | | - ldp x29, x30, [sp], #16 |
213 | | - .cfi_def_cfa_offset 0 |
214 | | - .cfi_restore w30 |
215 | | - .cfi_restore w29 |
216 | 204 | ret |
217 | | -1: |
| 205 | +2: |
218 | 206 | mov x0, xzr |
219 | | - .cfi_def_cfa wsp, 16 |
220 | | - ldp x29, x30, [sp], #16 |
221 | | - .cfi_def_cfa_offset 0 |
222 | | - .cfi_restore w30 |
223 | | - .cfi_restore w29 |
224 | 207 | ret |
225 | 208 | END_COMPILERRT_OUTLINE_FUNCTION(__arm_get_current_vg) |
226 | 209 |
|
|
0 commit comments