From 7635b30f9d62e33b057d830780a937c6c1d140f5 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Wed, 14 Dec 2005 02:33:36 +0000 Subject: Fixup byte order handling. Not all architectures define __BIG_ENDIAN__ so i.e. on big endian mips the code is compiled as little-endian and the wrong half of the 64-bit point value is examined to check for NaN, etc. This bug also broke fpclassify(), isfinite(), isnormal(), isinf(), finite(), and signbit(). --- libc/string/sh64/memset.S | 4 +++- libc/string/sh64/strcpy.S | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'libc/string') diff --git a/libc/string/sh64/memset.S b/libc/string/sh64/memset.S index e1679230b..d87879717 100644 --- a/libc/string/sh64/memset.S +++ b/libc/string/sh64/memset.S @@ -9,7 +9,9 @@ ! Copyright 2002 SuperH Ltd. ! -#ifdef __LITTLE_ENDIAN__ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN #define SHHI shlld #define SHLO shlrd #else diff --git a/libc/string/sh64/strcpy.S b/libc/string/sh64/strcpy.S index faa071c50..f662cc859 100644 --- a/libc/string/sh64/strcpy.S +++ b/libc/string/sh64/strcpy.S @@ -6,7 +6,9 @@ ! ! SH5 code Copyright 2002 SuperH Ltd. -#ifdef __LITTLE_ENDIAN__ +#include + +#if __BYTE_ORDER == __LITTLE_ENDIAN #define SHHI shlld #define SHLO shlrd #else @@ -67,7 +69,7 @@ no_lddst: add r5, r63, r4 addi r0, 8, r0 shortstring: -#ifndef __LITTLE_ENDIAN__ +#if __BYTE_ORDER != __LITTLE_ENDIAN pta/l shortstring2,tr1 byterev r4,r4 #endif -- cgit v1.2.3