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