source: scripts/patches/glibc-vfp.patch@ ec96aa6

clfs-1.2 clfs-2.1 clfs-3.0.0-systemd clfs-3.0.0-sysvinit systemd sysvinit
Last change on this file since ec96aa6 was 7f65c0e, checked in by Jim Gifford <clfs@…>, 19 years ago

r625@server (orig r623): jim | 2005-10-31 12:43:24 -0800
Final Move

  • Property mode set to 100644
File size: 5.0 KB
  • sysdeps/arm/bits/endian.h

    # Source: http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html
    #
    # From: Dan Kegel <dank at kegel dot com>
    # To: Nicolas Pitre <nico at cam dot org>
    # Cc: add <addsub at eyou dot com>, Richard dot Earnshaw at arm dot com,
    #     rearnsha at arm dot com, crossgcc at sources dot redhat dot com,
    #     linux-arm at lists dot arm dot linux dot org dot uk
    # Date: Mon, 16 Feb 2004 22:49:35 -0800
    # Subject: Re: problem while building arm vfp softfloat gcc
    #
    # Attached is a patch from addsub@eyou.com that he says patches glibc and
    # makes printf("%f", 1.0) work again.   I haven't tested it, just wanted
    # to give Nico a chance to have a look at it.  Not sure if addsub wrote
    # this himself or whether it's suitable for glibc mainline (I've asked him).
    # - Dan
    
    diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h
    old new  
    99#else
    1010#define __BYTE_ORDER __LITTLE_ENDIAN
    1111#endif
     12
     13#ifdef __VFP_FP__
     14#define __FLOAT_WORD_ORDER __BYTE_ORDER
     15#else
    1216#define __FLOAT_WORD_ORDER __BIG_ENDIAN
     17#endif
  • sysdeps/arm/gmp-mparam.h

    diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h
    old new MA 02111-1307, USA. */  
    2626#define BITS_PER_SHORTINT 16
    2727#define BITS_PER_CHAR 8
    2828
    29 #define IEEE_DOUBLE_BIG_ENDIAN 0
    30 #define IEEE_DOUBLE_MIXED_ENDIAN 1
     29#if defined(__ARMEB__)
     30# define IEEE_DOUBLE_MIXED_ENDIAN 0
     31# define IEEE_DOUBLE_BIG_ENDIAN 1
     32#elif defined(__VFP_FP__)
     33# define IEEE_DOUBLE_MIXED_ENDIAN 0
     34# define IEEE_DOUBLE_BIG_ENDIAN 0
     35#else
     36# define IEEE_DOUBLE_BIG_ENDIAN 0
     37# define IEEE_DOUBLE_MIXED_ENDIAN 1
     38#endif
  • sysdeps/arm/ieee754.h

    diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h
    old new  
    1 /* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc.
    2    This file is part of the GNU C Library.
    3 
    4    The GNU C Library is free software; you can redistribute it and/or
    5    modify it under the terms of the GNU Lesser General Public
    6    License as published by the Free Software Foundation; either
    7    version 2.1 of the License, or (at your option) any later version.
    8 
    9    The GNU C Library is distributed in the hope that it will be useful,
    10    but WITHOUT ANY WARRANTY; without even the implied warranty of
    11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    12    Lesser General Public License for more details.
    13 
    14    You should have received a copy of the GNU Lesser General Public
    15    License along with the GNU C Library; if not, write to the Free
    16    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    17    02111-1307 USA.  */
    18 
    19 #ifndef _IEEE754_H
    20 
    21 #define _IEEE754_H 1
    22 #include <features.h>
    23 
    24 #include <endian.h>
    25 
    26 __BEGIN_DECLS
    27 
    28 union ieee754_float
    29   {
    30     float f;
    31 
    32     /* This is the IEEE 754 single-precision format.  */
    33     struct
    34       {
    35         unsigned int mantissa:23;
    36         unsigned int exponent:8;
    37         unsigned int negative:1;
    38       } ieee;
    39 
    40     /* This format makes it easier to see if a NaN is a signalling NaN.  */
    41     struct
    42       {
    43         unsigned int mantissa:22;
    44         unsigned int quiet_nan:1;
    45         unsigned int exponent:8;
    46         unsigned int negative:1;
    47       } ieee_nan;
    48   };
    49 
    50 #define IEEE754_FLOAT_BIAS      0x7f /* Added to exponent.  */
    51 
    52 
    53 union ieee754_double
    54   {
    55     double d;
    56 
    57     /* This is the IEEE 754 double-precision format.  */
    58     struct
    59       {
    60         unsigned int mantissa0:20;
    61         unsigned int exponent:11;
    62         unsigned int negative:1;
    63         unsigned int mantissa1:32;
    64       } ieee;
    65 
    66     /* This format makes it easier to see if a NaN is a signalling NaN.  */
    67     struct
    68       {
    69         unsigned int mantissa0:19;
    70         unsigned int quiet_nan:1;
    71         unsigned int exponent:11;
    72         unsigned int negative:1;
    73         unsigned int mantissa1:32;
    74       } ieee_nan;
    75   };
    76 
    77 #define IEEE754_DOUBLE_BIAS     0x3ff /* Added to exponent.  */
    78 
    79 
    80 /* The following two structures are correct for `new' floating point systems but
    81    wrong for the old FPPC.  The only solution seems to be to avoid their use on
    82    old hardware.  */
    83 
    84 union ieee854_long_double
    85   {
    86     long double d;
    87 
    88     /* This is the IEEE 854 double-extended-precision format.  */
    89     struct
    90       {
    91         unsigned int exponent:15;
    92         unsigned int empty:16;
    93         unsigned int negative:1;
    94         unsigned int mantissa1:32;
    95         unsigned int mantissa0:32;
    96       } ieee;
    97 
    98     /* This is for NaNs in the IEEE 854 double-extended-precision format.  */
    99     struct
    100       {
    101         unsigned int exponent:15;
    102         unsigned int empty:16;
    103         unsigned int negative:1;
    104         unsigned int mantissa1:32;
    105         unsigned int mantissa0:30;
    106         unsigned int quiet_nan:1;
    107         unsigned int one:1;
    108       } ieee_nan;
    109   };
    110 
    111 #define IEEE854_LONG_DOUBLE_BIAS 0x3fff
    112 
    113 __END_DECLS
    114 
    115 #endif /* ieee754.h */
Note: See TracBrowser for help on using the repository browser.