|
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