Zephyr Project API
3.7.0
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
float_regs_arm64_gcc.h
Go to the documentation of this file.
1
6
/*
7
* Copyright (c) 2021 BayLibre SAS
8
*
9
* SPDX-License-Identifier: Apache-2.0
10
*/
11
12
#ifndef _FLOAT_REGS_ARM64_GCC_H
13
#define _FLOAT_REGS_ARM64_GCC_H
14
15
#include <
zephyr/toolchain.h
>
16
#include "
float_context.h
"
17
34
static
inline
void
_load_all_float_registers(
struct
fp_register_set
*regs)
35
{
36
__asm__
volatile
(
37
"ldp q0, q1, [x0, #(16 * 0)]\n\t"
38
"ldp q2, q3, [x0, #(16 * 2)]\n\t"
39
"ldp q4, q5, [x0, #(16 * 4)]\n\t"
40
"ldp q6, q7, [x0, #(16 * 6)]\n\t"
41
"ldp q8, q9, [x0, #(16 * 8)]\n\t"
42
"ldp q10, q11, [x0, #(16 * 10)]\n\t"
43
"ldp q12, q13, [x0, #(16 * 12)]\n\t"
44
"ldp q14, q15, [x0, #(16 * 14)]\n\t"
45
"ldp q16, q17, [x0, #(16 * 16)]\n\t"
46
"ldp q18, q19, [x0, #(16 * 18)]\n\t"
47
"ldp q20, q21, [x0, #(16 * 20)]\n\t"
48
"ldp q22, q23, [x0, #(16 * 22)]\n\t"
49
"ldp q24, q25, [x0, #(16 * 24)]\n\t"
50
"ldp q26, q27, [x0, #(16 * 26)]\n\t"
51
"ldp q28, q29, [x0, #(16 * 28)]\n\t"
52
"ldp q30, q31, [x0, #(16 * 30)]"
53
:
54
:
"r"
(regs)
55
);
56
}
57
69
static
inline
void
_store_all_float_registers(
struct
fp_register_set
*regs)
70
{
71
__asm__
volatile
(
72
"stp q0, q1, [x0, #(16 * 0)]\n\t"
73
"stp q2, q3, [x0, #(16 * 2)]\n\t"
74
"stp q4, q5, [x0, #(16 * 4)]\n\t"
75
"stp q6, q7, [x0, #(16 * 6)]\n\t"
76
"stp q8, q9, [x0, #(16 * 8)]\n\t"
77
"stp q10, q11, [x0, #(16 * 10)]\n\t"
78
"stp q12, q13, [x0, #(16 * 12)]\n\t"
79
"stp q14, q15, [x0, #(16 * 14)]\n\t"
80
"stp q16, q17, [x0, #(16 * 16)]\n\t"
81
"stp q18, q19, [x0, #(16 * 18)]\n\t"
82
"stp q20, q21, [x0, #(16 * 20)]\n\t"
83
"stp q22, q23, [x0, #(16 * 22)]\n\t"
84
"stp q24, q25, [x0, #(16 * 24)]\n\t"
85
"stp q26, q27, [x0, #(16 * 26)]\n\t"
86
"stp q28, q29, [x0, #(16 * 28)]\n\t"
87
"stp q30, q31, [x0, #(16 * 30)]"
88
:
89
:
"r"
(regs)
90
:
"memory"
91
);
92
}
93
107
static
inline
void
_load_then_store_all_float_registers(
108
struct
fp_register_set
*regs)
109
{
110
_load_all_float_registers(regs);
111
_store_all_float_registers(regs);
112
}
113
#endif
/* _FLOAT_REGS_ARM64_GCC_H */
float_context.h
common definitions for the FPU sharing test application
fp_register_set
Definition
float_context.h:192
toolchain.h
Macros to abstract toolchain specific capabilities.
tests
kernel
fpu_sharing
generic
src
float_regs_arm64_gcc.h
Generated on Sun Sep 15 2024 17:01:30 for Zephyr Project API by
1.9.8