171 lines
2.6 KiB
ArmAsm
171 lines
2.6 KiB
ArmAsm
/*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*
|
|
* Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
*
|
|
* Authors:
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
*/
|
|
|
|
#ifdef __riscv_flen
|
|
|
|
#if __riscv_flen != 64
|
|
# error single-float only is not supported
|
|
#endif
|
|
|
|
#define get_f32(which) fmv.x.s a0, which; jr t0
|
|
#define put_f32(which) fmv.s.x which, a0; jr t0
|
|
#if __riscv_xlen == 64
|
|
# define get_f64(which) fmv.x.d a0, which; jr t0
|
|
# define put_f64(which) fmv.d.x which, a0; jr t0
|
|
#else
|
|
# define get_f64(which) fsd which, 0(a0); jr t0
|
|
# define put_f64(which) fld which, 0(a0); jr t0
|
|
#endif
|
|
|
|
.text
|
|
.option norvc
|
|
.globl get_f32_reg
|
|
get_f32_reg:
|
|
get_f32(f0)
|
|
get_f32(f1)
|
|
get_f32(f2)
|
|
get_f32(f3)
|
|
get_f32(f4)
|
|
get_f32(f5)
|
|
get_f32(f6)
|
|
get_f32(f7)
|
|
get_f32(f8)
|
|
get_f32(f9)
|
|
get_f32(f10)
|
|
get_f32(f11)
|
|
get_f32(f12)
|
|
get_f32(f13)
|
|
get_f32(f14)
|
|
get_f32(f15)
|
|
get_f32(f16)
|
|
get_f32(f17)
|
|
get_f32(f18)
|
|
get_f32(f19)
|
|
get_f32(f20)
|
|
get_f32(f21)
|
|
get_f32(f22)
|
|
get_f32(f23)
|
|
get_f32(f24)
|
|
get_f32(f25)
|
|
get_f32(f26)
|
|
get_f32(f27)
|
|
get_f32(f28)
|
|
get_f32(f29)
|
|
get_f32(f30)
|
|
get_f32(f31)
|
|
|
|
.text
|
|
.globl put_f32_reg
|
|
put_f32_reg:
|
|
put_f32(f0)
|
|
put_f32(f1)
|
|
put_f32(f2)
|
|
put_f32(f3)
|
|
put_f32(f4)
|
|
put_f32(f5)
|
|
put_f32(f6)
|
|
put_f32(f7)
|
|
put_f32(f8)
|
|
put_f32(f9)
|
|
put_f32(f10)
|
|
put_f32(f11)
|
|
put_f32(f12)
|
|
put_f32(f13)
|
|
put_f32(f14)
|
|
put_f32(f15)
|
|
put_f32(f16)
|
|
put_f32(f17)
|
|
put_f32(f18)
|
|
put_f32(f19)
|
|
put_f32(f20)
|
|
put_f32(f21)
|
|
put_f32(f22)
|
|
put_f32(f23)
|
|
put_f32(f24)
|
|
put_f32(f25)
|
|
put_f32(f26)
|
|
put_f32(f27)
|
|
put_f32(f28)
|
|
put_f32(f29)
|
|
put_f32(f30)
|
|
put_f32(f31)
|
|
|
|
.text
|
|
.globl get_f64_reg
|
|
get_f64_reg:
|
|
get_f64(f0)
|
|
get_f64(f1)
|
|
get_f64(f2)
|
|
get_f64(f3)
|
|
get_f64(f4)
|
|
get_f64(f5)
|
|
get_f64(f6)
|
|
get_f64(f7)
|
|
get_f64(f8)
|
|
get_f64(f9)
|
|
get_f64(f10)
|
|
get_f64(f11)
|
|
get_f64(f12)
|
|
get_f64(f13)
|
|
get_f64(f14)
|
|
get_f64(f15)
|
|
get_f64(f16)
|
|
get_f64(f17)
|
|
get_f64(f18)
|
|
get_f64(f19)
|
|
get_f64(f20)
|
|
get_f64(f21)
|
|
get_f64(f22)
|
|
get_f64(f23)
|
|
get_f64(f24)
|
|
get_f64(f25)
|
|
get_f64(f26)
|
|
get_f64(f27)
|
|
get_f64(f28)
|
|
get_f64(f29)
|
|
get_f64(f30)
|
|
get_f64(f31)
|
|
|
|
.text
|
|
.globl put_f64_reg
|
|
put_f64_reg:
|
|
put_f64(f0)
|
|
put_f64(f1)
|
|
put_f64(f2)
|
|
put_f64(f3)
|
|
put_f64(f4)
|
|
put_f64(f5)
|
|
put_f64(f6)
|
|
put_f64(f7)
|
|
put_f64(f8)
|
|
put_f64(f9)
|
|
put_f64(f10)
|
|
put_f64(f11)
|
|
put_f64(f12)
|
|
put_f64(f13)
|
|
put_f64(f14)
|
|
put_f64(f15)
|
|
put_f64(f16)
|
|
put_f64(f17)
|
|
put_f64(f18)
|
|
put_f64(f19)
|
|
put_f64(f20)
|
|
put_f64(f21)
|
|
put_f64(f22)
|
|
put_f64(f23)
|
|
put_f64(f24)
|
|
put_f64(f25)
|
|
put_f64(f26)
|
|
put_f64(f27)
|
|
put_f64(f28)
|
|
put_f64(f29)
|
|
put_f64(f30)
|
|
put_f64(f31)
|
|
|
|
#endif
|