xref: /haiku/src/system/libroot/os/arch/arm64/byteorder.S (revision d81df6ce849ca9d892773a1d52fcf3047325a502)
1*d81df6ceSFredrik Holmqvist/*
2*d81df6ceSFredrik Holmqvist * Copyright 2021, Haiku, Inc. All rights reserved.
3*d81df6ceSFredrik Holmqvist * Released under the terms of the MIT License
4*d81df6ceSFredrik Holmqvist */
5*d81df6ceSFredrik Holmqvist
6*d81df6ceSFredrik Holmqvist
7*d81df6ceSFredrik Holmqvist#include <asm_defs.h>
8*d81df6ceSFredrik Holmqvist
9*d81df6ceSFredrik Holmqvist.text
10*d81df6ceSFredrik Holmqvist
11*d81df6ceSFredrik Holmqvist/* float __swap_float(float value) */
12*d81df6ceSFredrik HolmqvistFUNCTION(__swap_float):
13*d81df6ceSFredrik Holmqvist		fmov s0, w0	// Bitcopy float to general register
14*d81df6ceSFredrik Holmqvist		rev w0, w0	// GCC8.3 does this for __builtin_bswap32
15*d81df6ceSFredrik Holmqvist		fmov w0, s0	// and back
16*d81df6ceSFredrik Holmqvist		ret
17*d81df6ceSFredrik HolmqvistFUNCTION_END(__swap_float)
18*d81df6ceSFredrik Holmqvist
19*d81df6ceSFredrik Holmqvist
20*d81df6ceSFredrik Holmqvist/* double __swap_double(double value) */
21*d81df6ceSFredrik HolmqvistFUNCTION(__swap_double):
22*d81df6ceSFredrik Holmqvist		fmov d0, x0	// Bitcopy double to general register
23*d81df6ceSFredrik Holmqvist		rev x0, x0	// GCC8.3 does this for __builtin_bswap64
24*d81df6ceSFredrik Holmqvist		fmov x0, d0	// and back
25*d81df6ceSFredrik Holmqvist		ret
26*d81df6ceSFredrik HolmqvistFUNCTION_END(__swap_double)
27