162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#include <linux/linkage.h> 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci.text 562306a36Sopenharmony_ci.type perf_regs_load,%function 662306a36Sopenharmony_ci#define STR_REG(r) str x##r, [x0, 8 * r] 762306a36Sopenharmony_ci#define LDR_REG(r) ldr x##r, [x0, 8 * r] 862306a36Sopenharmony_ci#define SP (8 * 31) 962306a36Sopenharmony_ci#define PC (8 * 32) 1062306a36Sopenharmony_ciSYM_FUNC_START(perf_regs_load) 1162306a36Sopenharmony_ci STR_REG(0) 1262306a36Sopenharmony_ci STR_REG(1) 1362306a36Sopenharmony_ci STR_REG(2) 1462306a36Sopenharmony_ci STR_REG(3) 1562306a36Sopenharmony_ci STR_REG(4) 1662306a36Sopenharmony_ci STR_REG(5) 1762306a36Sopenharmony_ci STR_REG(6) 1862306a36Sopenharmony_ci STR_REG(7) 1962306a36Sopenharmony_ci STR_REG(8) 2062306a36Sopenharmony_ci STR_REG(9) 2162306a36Sopenharmony_ci STR_REG(10) 2262306a36Sopenharmony_ci STR_REG(11) 2362306a36Sopenharmony_ci STR_REG(12) 2462306a36Sopenharmony_ci STR_REG(13) 2562306a36Sopenharmony_ci STR_REG(14) 2662306a36Sopenharmony_ci STR_REG(15) 2762306a36Sopenharmony_ci STR_REG(16) 2862306a36Sopenharmony_ci STR_REG(17) 2962306a36Sopenharmony_ci STR_REG(18) 3062306a36Sopenharmony_ci STR_REG(19) 3162306a36Sopenharmony_ci STR_REG(20) 3262306a36Sopenharmony_ci STR_REG(21) 3362306a36Sopenharmony_ci STR_REG(22) 3462306a36Sopenharmony_ci STR_REG(23) 3562306a36Sopenharmony_ci STR_REG(24) 3662306a36Sopenharmony_ci STR_REG(25) 3762306a36Sopenharmony_ci STR_REG(26) 3862306a36Sopenharmony_ci STR_REG(27) 3962306a36Sopenharmony_ci STR_REG(28) 4062306a36Sopenharmony_ci STR_REG(29) 4162306a36Sopenharmony_ci STR_REG(30) 4262306a36Sopenharmony_ci mov x1, sp 4362306a36Sopenharmony_ci str x1, [x0, #SP] 4462306a36Sopenharmony_ci str x30, [x0, #PC] 4562306a36Sopenharmony_ci LDR_REG(1) 4662306a36Sopenharmony_ci ret 4762306a36Sopenharmony_ciSYM_FUNC_END(perf_regs_load) 48