Zephyr API Documentation
2.7.0-rc2
A Scalable Open Source RTOS
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 <
toolchain.h
>
16
#include "
float_context.h
"
17
35
static
inline
void
_load_all_float_registers(
struct
fp_register_set
*regs)
36
{
37
__asm__
volatile
(
38
"ldp q0, q1, [x0, #(16 * 0)]\n\t"
39
"ldp q2, q3, [x0, #(16 * 2)]\n\t"
40
"ldp q4, q5, [x0, #(16 * 4)]\n\t"
41
"ldp q6, q7, [x0, #(16 * 6)]\n\t"
42
"ldp q8, q9, [x0, #(16 * 8)]\n\t"
43
"ldp q10, q11, [x0, #(16 * 10)]\n\t"
44
"ldp q12, q13, [x0, #(16 * 12)]\n\t"
45
"ldp q14, q15, [x0, #(16 * 14)]\n\t"
46
"ldp q16, q17, [x0, #(16 * 16)]\n\t"
47
"ldp q18, q19, [x0, #(16 * 18)]\n\t"
48
"ldp q20, q21, [x0, #(16 * 20)]\n\t"
49
"ldp q22, q23, [x0, #(16 * 22)]\n\t"
50
"ldp q24, q25, [x0, #(16 * 24)]\n\t"
51
"ldp q26, q27, [x0, #(16 * 26)]\n\t"
52
"ldp q28, q29, [x0, #(16 * 28)]\n\t"
53
"ldp q30, q31, [x0, #(16 * 30)]"
54
:
55
:
"r"
(regs)
56
);
57
}
58
71
static
inline
void
_store_all_float_registers(
struct
fp_register_set
*regs)
72
{
73
__asm__
volatile
(
74
"stp q0, q1, [x0, #(16 * 0)]\n\t"
75
"stp q2, q3, [x0, #(16 * 2)]\n\t"
76
"stp q4, q5, [x0, #(16 * 4)]\n\t"
77
"stp q6, q7, [x0, #(16 * 6)]\n\t"
78
"stp q8, q9, [x0, #(16 * 8)]\n\t"
79
"stp q10, q11, [x0, #(16 * 10)]\n\t"
80
"stp q12, q13, [x0, #(16 * 12)]\n\t"
81
"stp q14, q15, [x0, #(16 * 14)]\n\t"
82
"stp q16, q17, [x0, #(16 * 16)]\n\t"
83
"stp q18, q19, [x0, #(16 * 18)]\n\t"
84
"stp q20, q21, [x0, #(16 * 20)]\n\t"
85
"stp q22, q23, [x0, #(16 * 22)]\n\t"
86
"stp q24, q25, [x0, #(16 * 24)]\n\t"
87
"stp q26, q27, [x0, #(16 * 26)]\n\t"
88
"stp q28, q29, [x0, #(16 * 28)]\n\t"
89
"stp q30, q31, [x0, #(16 * 30)]"
90
:
91
:
"r"
(regs)
92
:
"memory"
93
);
94
}
95
110
static
inline
void
_load_then_store_all_float_registers(
111
struct
fp_register_set
*regs)
112
{
113
_load_all_float_registers(regs);
114
_store_all_float_registers(regs);
115
}
116
#endif
/* _FLOAT_REGS_ARM64_GCC_H */
float_context.h
common definitions for the FPU sharing test application
fp_register_set
Definition:
float_context.h:164
toolchain.h
Macros to abstract toolchain specific capabilities.
tests
kernel
fpu_sharing
generic
src
float_regs_arm64_gcc.h
Generated on Sun Oct 9 2022 09:21:57 for Zephyr API Documentation by
1.9.4