1/* 2 * Copyright (c) 2021 BayLibre SAS 3 * Written by: Nicolas Pitre 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8#include <zephyr/toolchain.h> 9#include <zephyr/linker/sections.h> 10 11_ASM_FILE_PROLOGUE 12 13GTEXT(z_arm64_fpu_save) 14SECTION_FUNC(TEXT, z_arm64_fpu_save) 15 16 stp q0, q1, [x0, #(16 * 0)] 17 stp q2, q3, [x0, #(16 * 2)] 18 stp q4, q5, [x0, #(16 * 4)] 19 stp q6, q7, [x0, #(16 * 6)] 20 stp q8, q9, [x0, #(16 * 8)] 21 stp q10, q11, [x0, #(16 * 10)] 22 stp q12, q13, [x0, #(16 * 12)] 23 stp q14, q15, [x0, #(16 * 14)] 24 stp q16, q17, [x0, #(16 * 16)] 25 stp q18, q19, [x0, #(16 * 18)] 26 stp q20, q21, [x0, #(16 * 20)] 27 stp q22, q23, [x0, #(16 * 22)] 28 stp q24, q25, [x0, #(16 * 24)] 29 stp q26, q27, [x0, #(16 * 26)] 30 stp q28, q29, [x0, #(16 * 28)] 31 stp q30, q31, [x0, #(16 * 30)] 32 33 mrs x1, fpsr 34 mrs x2, fpcr 35 str w1, [x0, #(16 * 32 + 0)] 36 str w2, [x0, #(16 * 32 + 4)] 37 38 ret 39 40GTEXT(z_arm64_fpu_restore) 41SECTION_FUNC(TEXT, z_arm64_fpu_restore) 42 43 ldp q0, q1, [x0, #(16 * 0)] 44 ldp q2, q3, [x0, #(16 * 2)] 45 ldp q4, q5, [x0, #(16 * 4)] 46 ldp q6, q7, [x0, #(16 * 6)] 47 ldp q8, q9, [x0, #(16 * 8)] 48 ldp q10, q11, [x0, #(16 * 10)] 49 ldp q12, q13, [x0, #(16 * 12)] 50 ldp q14, q15, [x0, #(16 * 14)] 51 ldp q16, q17, [x0, #(16 * 16)] 52 ldp q18, q19, [x0, #(16 * 18)] 53 ldp q20, q21, [x0, #(16 * 20)] 54 ldp q22, q23, [x0, #(16 * 22)] 55 ldp q24, q25, [x0, #(16 * 24)] 56 ldp q26, q27, [x0, #(16 * 26)] 57 ldp q28, q29, [x0, #(16 * 28)] 58 ldp q30, q31, [x0, #(16 * 30)] 59 60 ldr w1, [x0, #(16 * 32 + 0)] 61 ldr w2, [x0, #(16 * 32 + 4)] 62 msr fpsr, x1 63 msr fpcr, x2 64 65 ret 66