* elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs

found.  Reported by Alexandre Oliva <aoliva@redhat.com>.

2003-03-13  Alexandre Oliva  <aoliva@redhat.com>

	* stdio-common/_itoa.c (_itoa_base_table): Make 64-bit
	literals long long.
	* stdlib/fpioconst.c: Likewise.
	* stdlib/strtod.c: Likewise.

	* sysdeps/mips/add_n.S: Use L macro for local labels.
	* sysdeps/mips/addmul_1.S: Likewise.
	* sysdeps/mips/lshift.S: Likewise.
	* sysdeps/mips/memcpy.S: Likewise.
	* sysdeps/mips/memset.S: Likewise.
	* sysdeps/mips/mul_1.S: Likewise.
	* sysdeps/mips/rshift.S: Likewise.
	* sysdeps/mips/sub_n.S: Likewise.
	* sysdeps/mips/submul_1.S: Likewise.
	* sysdeps/mips/mips64/add_n.S: Likewise.
	* sysdeps/mips/mips64/addmul_1.S: Likewise.
	* sysdeps/mips/mips64/lshift.S: Likewise.
	* sysdeps/mips/mips64/mul_1.S: Likewise.
	* sysdeps/mips/mips64/rshift.S: Likewise.
	* sysdeps/mips/mips64/sub_n.S: Likewise.
	* sysdeps/mips/mips64/submul_1.S: Likewise.
	* sysdeps/unix/mips/sysdep.h: Define L() according to ABI
	conventions.  Define END as in sys/asm.h.
	* sysdeps/unix/mips/sysdep.S: Likewise.
	* sysdeps/unix/mips/wait.S: Likewise.
	* sysdeps/unix/sysv/linux/mips/clone.S: Likewise.

	* sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double):
	Cast shifted values that may be too narrow to mp_limb_t.
	* sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double):
	Likewise.
	* sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float):
	Likewise.
	* sysdeps/ieee754/ldbl-128/ldbl2mpn.c
	(__mpn_extract_long_double): Likewise.
	* sysdeps/ieee754/ldbl-128/mpn2ldbl.c
	(__mpn_construct_long_double): Likewise.
	* sysdeps/ieee754/ldbl-96/ldbl2mpn.c
	(__mpn_extract_long_double): Likewise.
	* sysdeps/ieee754/ldbl-96/mpn2ldbl.c
	(__mpn_construct_long_double): Likewise.

2003-03-13  Roland McGrath  <roland@redhat.com>
This commit is contained in:
Roland McGrath 2003-03-14 03:59:59 +00:00
parent 6461e57784
commit d8a5edc221
32 changed files with 522 additions and 431 deletions

View file

@ -1,3 +1,52 @@
2003-03-13 Roland McGrath <roland@redhat.com>
* elf/dl-load.c (_dl_map_object_from_fd): Bail if no PT_LOAD phdrs
found. Reported by Alexandre Oliva <aoliva@redhat.com>.
2003-03-13 Alexandre Oliva <aoliva@redhat.com>
* stdio-common/_itoa.c (_itoa_base_table): Make 64-bit
literals long long.
* stdlib/fpioconst.c: Likewise.
* stdlib/strtod.c: Likewise.
* sysdeps/mips/add_n.S: Use L macro for local labels.
* sysdeps/mips/addmul_1.S: Likewise.
* sysdeps/mips/lshift.S: Likewise.
* sysdeps/mips/memcpy.S: Likewise.
* sysdeps/mips/memset.S: Likewise.
* sysdeps/mips/mul_1.S: Likewise.
* sysdeps/mips/rshift.S: Likewise.
* sysdeps/mips/sub_n.S: Likewise.
* sysdeps/mips/submul_1.S: Likewise.
* sysdeps/mips/mips64/add_n.S: Likewise.
* sysdeps/mips/mips64/addmul_1.S: Likewise.
* sysdeps/mips/mips64/lshift.S: Likewise.
* sysdeps/mips/mips64/mul_1.S: Likewise.
* sysdeps/mips/mips64/rshift.S: Likewise.
* sysdeps/mips/mips64/sub_n.S: Likewise.
* sysdeps/mips/mips64/submul_1.S: Likewise.
* sysdeps/unix/mips/sysdep.h: Define L() according to ABI
conventions. Define END as in sys/asm.h.
* sysdeps/unix/mips/sysdep.S: Likewise.
* sysdeps/unix/mips/wait.S: Likewise.
* sysdeps/unix/sysv/linux/mips/clone.S: Likewise.
* sysdeps/ieee754/dbl-64/dbl2mpn.c (__mpn_extract_double):
Cast shifted values that may be too narrow to mp_limb_t.
* sysdeps/ieee754/dbl-64/mpn2dbl.c (__mpn_construct_double):
Likewise.
* sysdeps/ieee754/flt-32/mpn2flt.c (__mpn_construct_float):
Likewise.
* sysdeps/ieee754/ldbl-128/ldbl2mpn.c
(__mpn_extract_long_double): Likewise.
* sysdeps/ieee754/ldbl-128/mpn2ldbl.c
(__mpn_construct_long_double): Likewise.
* sysdeps/ieee754/ldbl-96/ldbl2mpn.c
(__mpn_extract_long_double): Likewise.
* sysdeps/ieee754/ldbl-96/mpn2ldbl.c
(__mpn_construct_long_double): Likewise.
2003-03-13 Roland McGrath <roland@redhat.com>
* elf/Makefile ($(objpfx)librtld.mk): Tweak regexp so that one-line

View file

@ -1028,6 +1028,15 @@ cannot allocate TLS data structures for initial thread");
break;
}
if (__builtin_expect (nloadcmds == 0, 0))
{
/* This only happens for a bogus object that will be caught with
another error below. But we don't want to go through the
calculations below using NLOADCMDS - 1. */
errstring = N_("object file has no loadable segments");
goto call_lose;
}
/* Now process the load commands and map segments into memory. */
c = loadcmds;

View file

@ -1,5 +1,6 @@
/* Internal function for converting integers to ASCII.
Copyright (C) 1994,1995,1996,1999,2000,2002 Free Software Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Torbjorn Granlund <tege@matematik.su.se>
and Ulrich Drepper <drepper@gnu.org>.
@ -81,41 +82,41 @@ struct base_table_t
const struct base_table_t _itoa_base_table[] attribute_hidden =
{
#if BITS_PER_MP_LIMB == 64
/* 2 */ {SEL1(0ul) 1, 1},
/* 3 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 1},
/* 4 */ {SEL1(0ul) 1, 2},
/* 5 */ {SEL1(0xcccccccccccccccdul) 0, 2},
/* 6 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 2},
/* 7 */ {SEL1(0x2492492492492493ul) 1, 3},
/* 8 */ {SEL1(0ul) 1, 3},
/* 9 */ {SEL1(0xe38e38e38e38e38ful) 0, 3},
/* 10 */ {SEL1(0xcccccccccccccccdul) 0, 3},
/* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 1},
/* 12 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 3},
/* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 2},
/* 14 */ {SEL1(0x2492492492492493ul) 1, 4},
/* 15 */ {SEL1(0x8888888888888889ul) 0, 3},
/* 16 */ {SEL1(0ul) 1, 4},
/* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 4},
/* 18 */ {SEL1(0xe38e38e38e38e38ful) 0, 4},
/* 19 */ {SEL1(0xd79435e50d79435ful) 0, 4},
/* 20 */ {SEL1(0xcccccccccccccccdul) 0, 4},
/* 21 */ {SEL1(0x8618618618618619ul) 1, 5},
/* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ul) 0, 2},
/* 23 */ {SEL1(0x642c8590b21642c9ul) 1, 5},
/* 24 */ {SEL1(0xaaaaaaaaaaaaaaabul) 0, 4},
/* 25 */ {SEL1(0x47ae147ae147ae15ul) 1, 5},
/* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ul) 0, 3},
/* 27 */ {SEL1(0x97b425ed097b425ful) 0, 4},
/* 28 */ {SEL1(0x2492492492492493ul) 1, 5},
/* 29 */ {SEL1(0x1a7b9611a7b9611bul) 1, 5},
/* 30 */ {SEL1(0x8888888888888889ul) 0, 4},
/* 31 */ {SEL1(0x0842108421084211ul) 1, 5},
/* 32 */ {SEL1(0ul) 1, 5},
/* 33 */ {SEL1(0x0f83e0f83e0f83e1ul) 0, 1},
/* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ul) 0, 5},
/* 35 */ {SEL1(0xea0ea0ea0ea0ea0ful) 0, 5},
/* 36 */ {SEL1(0xe38e38e38e38e38ful) 0, 5}
/* 2 */ {SEL1(0ull) 1, 1},
/* 3 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 1},
/* 4 */ {SEL1(0ull) 1, 2},
/* 5 */ {SEL1(0xcccccccccccccccdull) 0, 2},
/* 6 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 2},
/* 7 */ {SEL1(0x2492492492492493ull) 1, 3},
/* 8 */ {SEL1(0ull) 1, 3},
/* 9 */ {SEL1(0xe38e38e38e38e38full) 0, 3},
/* 10 */ {SEL1(0xcccccccccccccccdull) 0, 3},
/* 11 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 1},
/* 12 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 3},
/* 13 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 2},
/* 14 */ {SEL1(0x2492492492492493ull) 1, 4},
/* 15 */ {SEL1(0x8888888888888889ull) 0, 3},
/* 16 */ {SEL1(0ull) 1, 4},
/* 17 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 4},
/* 18 */ {SEL1(0xe38e38e38e38e38full) 0, 4},
/* 19 */ {SEL1(0xd79435e50d79435full) 0, 4},
/* 20 */ {SEL1(0xcccccccccccccccdull) 0, 4},
/* 21 */ {SEL1(0x8618618618618619ull) 1, 5},
/* 22 */ {SEL1(0x2e8ba2e8ba2e8ba3ull) 0, 2},
/* 23 */ {SEL1(0x642c8590b21642c9ull) 1, 5},
/* 24 */ {SEL1(0xaaaaaaaaaaaaaaabull) 0, 4},
/* 25 */ {SEL1(0x47ae147ae147ae15ull) 1, 5},
/* 26 */ {SEL1(0x4ec4ec4ec4ec4ec5ull) 0, 3},
/* 27 */ {SEL1(0x97b425ed097b425full) 0, 4},
/* 28 */ {SEL1(0x2492492492492493ull) 1, 5},
/* 29 */ {SEL1(0x1a7b9611a7b9611bull) 1, 5},
/* 30 */ {SEL1(0x8888888888888889ull) 0, 4},
/* 31 */ {SEL1(0x0842108421084211ull) 1, 5},
/* 32 */ {SEL1(0ull) 1, 5},
/* 33 */ {SEL1(0x0f83e0f83e0f83e1ull) 0, 1},
/* 34 */ {SEL1(0xf0f0f0f0f0f0f0f1ull) 0, 5},
/* 35 */ {SEL1(0xea0ea0ea0ea0ea0full) 0, 5},
/* 36 */ {SEL1(0xe38e38e38e38e38full) 0, 5}
#endif
#if BITS_PER_MP_LIMB == 32
/* 2 */ {SEL1(0ul) 1, 1, {0, 31, 0x80000000ul SEL2(0xfffffffful)}},

View file

@ -1,5 +1,6 @@
/* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1995, 1996, 1997, 1998, 1999, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -235,195 +236,198 @@ const mp_limb_t __tens[] =
{
#define TENS_P0_IDX 0
#define TENS_P0_SIZE 2
[TENS_P0_IDX] = 0x0000000000000000, 0x000000000000000a,
[TENS_P0_IDX] = 0x0000000000000000ull, 0x000000000000000aull,
#define TENS_P1_IDX (TENS_P0_IDX + TENS_P0_SIZE)
#define TENS_P1_SIZE 2
[TENS_P1_IDX] = 0x0000000000000000, 0x0000000000000064,
[TENS_P1_IDX] = 0x0000000000000000ull, 0x0000000000000064ull,
#define TENS_P2_IDX (TENS_P1_IDX + TENS_P1_SIZE)
#define TENS_P2_SIZE 2
[TENS_P2_IDX] = 0x0000000000000000, 0x0000000000002710,
[TENS_P2_IDX] = 0x0000000000000000ull, 0x0000000000002710ull,
#define TENS_P3_IDX (TENS_P2_IDX + TENS_P2_SIZE)
#define TENS_P3_SIZE 2
[TENS_P3_IDX] = 0x0000000000000000, 0x0000000005f5e100,
[TENS_P3_IDX] = 0x0000000000000000ull, 0x0000000005f5e100ull,
#define TENS_P4_IDX (TENS_P3_IDX + TENS_P3_SIZE)
#define TENS_P4_SIZE 2
[TENS_P4_IDX] = 0x0000000000000000, 0x002386f26fc10000,
[TENS_P4_IDX] = 0x0000000000000000ull, 0x002386f26fc10000ull,
#define TENS_P5_IDX (TENS_P4_IDX + TENS_P4_SIZE)
#define TENS_P5_SIZE 3
[TENS_P5_IDX] = 0x0000000000000000, 0x85acef8100000000, 0x000004ee2d6d415b,
[TENS_P5_IDX] = 0x0000000000000000ull, 0x85acef8100000000ull,
0x000004ee2d6d415bull,
#define TENS_P6_IDX (TENS_P5_IDX + TENS_P5_SIZE)
#define TENS_P6_SIZE 5
[TENS_P6_IDX] = 0x0000000000000000, 0x0000000000000000, 0x6e38ed64bf6a1f01,
0xe93ff9f4daa797ed, 0x0000000000184f03,
[TENS_P6_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x6e38ed64bf6a1f01ull, 0xe93ff9f4daa797edull, 0x0000000000184f03ull,
#define TENS_P7_IDX (TENS_P6_IDX + TENS_P6_SIZE)
#define TENS_P7_SIZE 8
[TENS_P7_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x03df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec,
0xa6337f19bccdb0da, 0x0000024ee91f2603,
[TENS_P7_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x03df99092e953e01ull, 0x2374e42f0f1538fdull,
0xc404dc08d3cff5ecull, 0xa6337f19bccdb0daull, 0x0000024ee91f2603ull,
#define TENS_P8_IDX (TENS_P7_IDX + TENS_P7_SIZE)
#define TENS_P8_SIZE 15
[TENS_P8_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0xbed3875b982e7c01,
0x12152f87d8d99f72, 0xcf4a6e706bde50c6, 0x26b2716ed595d80f,
0x1d153624adc666b0, 0x63ff540e3c42d35a, 0x65f9ef17cc5573c0,
0x80dcc7f755bc28f2, 0x5fdcefcef46eeddc, 0x00000000000553f7,
[TENS_P8_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0xbed3875b982e7c01ull, 0x12152f87d8d99f72ull, 0xcf4a6e706bde50c6ull,
0x26b2716ed595d80full, 0x1d153624adc666b0ull, 0x63ff540e3c42d35aull,
0x65f9ef17cc5573c0ull, 0x80dcc7f755bc28f2ull, 0x5fdcefcef46eeddcull,
0x00000000000553f7ull,
#ifndef __NO_LONG_DOUBLE_MATH
# define TENS_P9_IDX (TENS_P8_IDX + TENS_P8_SIZE)
# define TENS_P9_SIZE 28
[TENS_P9_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x77f27267fc6cf801, 0x5d96976f8f9546dc, 0xc31e1ad9b83a8a97,
0x94e6574746c40513, 0x4475b579c88976c1, 0xaa1da1bf28f8733b,
0x1e25cfea703ed321, 0xbc51fb2eb21a2f22, 0xbfa3edac96e14f5d,
0xe7fc7153329c57ae, 0x85a91924c3fc0695, 0xb2908ee0f95f635e,
0x1366732a93abade4, 0x69be5b0e9449775c, 0xb099bc817343afac,
0xa269974845a71d46, 0x8a0b1f138cb07303, 0xc1d238d98cab8a97,
0x0000001c633415d4,
[TENS_P9_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x77f27267fc6cf801ull, 0x5d96976f8f9546dcull,
0xc31e1ad9b83a8a97ull, 0x94e6574746c40513ull, 0x4475b579c88976c1ull,
0xaa1da1bf28f8733bull, 0x1e25cfea703ed321ull, 0xbc51fb2eb21a2f22ull,
0xbfa3edac96e14f5dull, 0xe7fc7153329c57aeull, 0x85a91924c3fc0695ull,
0xb2908ee0f95f635eull, 0x1366732a93abade4ull, 0x69be5b0e9449775cull,
0xb099bc817343afacull, 0xa269974845a71d46ull, 0x8a0b1f138cb07303ull,
0xc1d238d98cab8a97ull, 0x0000001c633415d4ull,
# define TENS_P10_IDX (TENS_P9_IDX + TENS_P9_SIZE)
# define TENS_P10_SIZE 55
[TENS_P10_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0xf55b2b722919f001,
0x1ec29f866e7c215b, 0x15c51a88991c4e87, 0x4c7d1e1a140ac535,
0x0ed1440ecc2cd819, 0x7de16cfb896634ee, 0x9fce837d1e43f61f,
0x233e55c7231d2b9c, 0xf451218b65dc60d7, 0xc96359861c5cd134,
0xa7e89431922bbb9f, 0x62be695a9f9f2a07, 0x045b7a748e1042c4,
0x8ad822a51abe1de3, 0xd814b505ba34c411, 0x8fc51a16bf3fdeb3,
0xf56deeecb1b896bc, 0xb6f4654b31fb6bfd, 0x6b7595fb101a3616,
0x80d98089dc1a47fe, 0x9a20288280bda5a5, 0xfc8f1f9031eb0f66,
0xe26a7b7e976a3310, 0x3ce3a0b8df68368a, 0x75a351a28e4262ce,
0x445975836cb0b6c9, 0xc356e38a31b5653f, 0x0190fba035faaba6,
0x88bc491b9fc4ed52, 0x005b80411640114a, 0x1e8d4649f4f3235e,
0x73c5534936a8de06, 0xc1a6970ca7e6bd2a, 0xd2db49ef47187094,
0xae6209d4926c3f5b, 0x34f4a3c62d433949, 0xd9d61a05d4305d94,
0x0000000000000325,
[TENS_P10_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0xf55b2b722919f001ull, 0x1ec29f866e7c215bull, 0x15c51a88991c4e87ull,
0x4c7d1e1a140ac535ull, 0x0ed1440ecc2cd819ull, 0x7de16cfb896634eeull,
0x9fce837d1e43f61full, 0x233e55c7231d2b9cull, 0xf451218b65dc60d7ull,
0xc96359861c5cd134ull, 0xa7e89431922bbb9full, 0x62be695a9f9f2a07ull,
0x045b7a748e1042c4ull, 0x8ad822a51abe1de3ull, 0xd814b505ba34c411ull,
0x8fc51a16bf3fdeb3ull, 0xf56deeecb1b896bcull, 0xb6f4654b31fb6bfdull,
0x6b7595fb101a3616ull, 0x80d98089dc1a47feull, 0x9a20288280bda5a5ull,
0xfc8f1f9031eb0f66ull, 0xe26a7b7e976a3310ull, 0x3ce3a0b8df68368aull,
0x75a351a28e4262ceull, 0x445975836cb0b6c9ull, 0xc356e38a31b5653full,
0x0190fba035faaba6ull, 0x88bc491b9fc4ed52ull, 0x005b80411640114aull,
0x1e8d4649f4f3235eull, 0x73c5534936a8de06ull, 0xc1a6970ca7e6bd2aull,
0xd2db49ef47187094ull, 0xae6209d4926c3f5bull, 0x34f4a3c62d433949ull,
0xd9d61a05d4305d94ull, 0x0000000000000325ull,
# define TENS_P11_IDX (TENS_P10_IDX + TENS_P10_SIZE)
# define TENS_P11_SIZE 108
[TENS_P11_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0xe30968651333e001, 0x49e28dcfb27d4d3f, 0xee87e354ec2e4721,
0x368b8abbb6067584, 0x2ed56d55a5e5a191, 0xea50d142fd827773,
0x98342c9e51b78db2, 0x866ed6f1c850dabc, 0x9279498719342c12,
0x66912e4ad2f869c2, 0x57a7842d71c7fd8f, 0xfb7fedcc235552eb,
0x38209ce1f3861ce0, 0x34c101349713b449, 0xa7a8289c8c6c54de,
0xe3cb64f32dbb6643, 0xe3892ee98074ff01, 0xa8f16f9210c17f94,
0x967abbb3a8281ed6, 0x9952fbed5a151440, 0xafe609c313b41e44,
0xf111821fa2bca416, 0x91bac974fb1264b4, 0x8e48ff35d6c7d6ab,
0xc4a656654419bd43, 0x33554c36685e5510, 0x0dbd21feab498697,
0x982da4663cfe491d, 0x9e110c7bcbea4ca7, 0x5fc5a04779c56b8a,
0x1aa9f44484d80e2e, 0x6a57b1ab730f203c, 0x87a7dc62d752f7a6,
0x40660460944545ff, 0xc9ac375d77c1a42f, 0x744695f0e866d7ef,
0xa1fc6b9681428c85, 0x7bf03c19d7917c7b, 0x5715f7915b33eb41,
0xdb0708fd8f6cae5f, 0x785ce6b7b125ac8e, 0x6f46eadb56c6815b,
0x195355d84eeebeee, 0x9d7389c0a244de3c, 0xcf99d01953761abd,
0x0d76ce39de9ec24b, 0x2e55ecee70beb181, 0xf56d9d4bd5f86079,
0x13ef5a83fb8886fb, 0x3f3389a4408f43c5, 0x58ccf45cfad37943,
0x415c7f3ef82df846, 0x8b3d5cf42915e818, 0xf8dbb57a6a445f27,
0x8ad803ecca8f0070, 0x038f9245b2e87c34, 0xc7c9dee0bedd8a6c,
0x2ad3fa140eac7d56, 0xf775677ce0de0840, 0x92be221ef1bd0ad5,
0xce9d04a487fa1fb9, 0x3f6f7024d2c36fa9, 0x907855eeb028af62,
0x4efac5dcd83e49d6, 0x77cd8c6be7151aab, 0x0af908b40a753b7d,
0xe50f30278c983623, 0x1d08e2d694222771, 0xf2ee5ca6f7e928e6,
0x11eb962b1b61b93c, 0xce2bcba19648b21c, 0x7bbebe3034f77154,
0x8ce329ace526a319, 0xb5dc53d5de4a74d2, 0x000000000009e8b3,
[TENS_P11_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0xe30968651333e001ull, 0x49e28dcfb27d4d3full,
0xee87e354ec2e4721ull, 0x368b8abbb6067584ull, 0x2ed56d55a5e5a191ull,
0xea50d142fd827773ull, 0x98342c9e51b78db2ull, 0x866ed6f1c850dabcull,
0x9279498719342c12ull, 0x66912e4ad2f869c2ull, 0x57a7842d71c7fd8full,
0xfb7fedcc235552ebull, 0x38209ce1f3861ce0ull, 0x34c101349713b449ull,
0xa7a8289c8c6c54deull, 0xe3cb64f32dbb6643ull, 0xe3892ee98074ff01ull,
0xa8f16f9210c17f94ull, 0x967abbb3a8281ed6ull, 0x9952fbed5a151440ull,
0xafe609c313b41e44ull, 0xf111821fa2bca416ull, 0x91bac974fb1264b4ull,
0x8e48ff35d6c7d6abull, 0xc4a656654419bd43ull, 0x33554c36685e5510ull,
0x0dbd21feab498697ull, 0x982da4663cfe491dull, 0x9e110c7bcbea4ca7ull,
0x5fc5a04779c56b8aull, 0x1aa9f44484d80e2eull, 0x6a57b1ab730f203cull,
0x87a7dc62d752f7a6ull, 0x40660460944545ffull, 0xc9ac375d77c1a42full,
0x744695f0e866d7efull, 0xa1fc6b9681428c85ull, 0x7bf03c19d7917c7bull,
0x5715f7915b33eb41ull, 0xdb0708fd8f6cae5full, 0x785ce6b7b125ac8eull,
0x6f46eadb56c6815bull, 0x195355d84eeebeeeull, 0x9d7389c0a244de3cull,
0xcf99d01953761abdull, 0x0d76ce39de9ec24bull, 0x2e55ecee70beb181ull,
0xf56d9d4bd5f86079ull, 0x13ef5a83fb8886fbull, 0x3f3389a4408f43c5ull,
0x58ccf45cfad37943ull, 0x415c7f3ef82df846ull, 0x8b3d5cf42915e818ull,
0xf8dbb57a6a445f27ull, 0x8ad803ecca8f0070ull, 0x038f9245b2e87c34ull,
0xc7c9dee0bedd8a6cull, 0x2ad3fa140eac7d56ull, 0xf775677ce0de0840ull,
0x92be221ef1bd0ad5ull, 0xce9d04a487fa1fb9ull, 0x3f6f7024d2c36fa9ull,
0x907855eeb028af62ull, 0x4efac5dcd83e49d6ull, 0x77cd8c6be7151aabull,
0x0af908b40a753b7dull, 0xe50f30278c983623ull, 0x1d08e2d694222771ull,
0xf2ee5ca6f7e928e6ull, 0x11eb962b1b61b93cull, 0xce2bcba19648b21cull,
0x7bbebe3034f77154ull, 0x8ce329ace526a319ull, 0xb5dc53d5de4a74d2ull,
0x000000000009e8b3ull,
# define TENS_P12_IDX (TENS_P11_IDX + TENS_P11_SIZE)
# define TENS_P12_SIZE 214
[TENS_P12_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x0000000000000000, 0x0000000000000000, 0xd4724e8d2a67c001,
0xf89a1e908efe7ae7, 0x54e05154ef084117, 0x506be82913b1bb51,
0xe599574efb29b172, 0x806c0ed3f0da6146, 0x45155e93b86ae5be,
0x7e1e7c34c0591cc2, 0x1d1f4cce7c4823da, 0xd6bfdf759b8ba1e8,
0xc2dfae78e341be10, 0x0f237f1a016b67b2, 0xaf6a25743dbeabcd,
0x142e0e80cab3e6d7, 0x2c23481161959127, 0xcb4bf98287009701,
0x88052f8cf8169c84, 0xbc13176168dde6d4, 0x54ab9c41ff0b0905,
0x1a1c304e7613b224, 0x441c2d473bfe167b, 0x78f061814f6cea9c,
0x30c7ae41eb659fb8, 0xa1ebcad7947e0d0e, 0x2130504dd97d9556,
0xf2acd5071a8309cb, 0xfd82373a3f8ec72a, 0x280f4d3295a842bc,
0x811a4f04f3618ac0, 0xd3967a1b6dc3a5b4, 0xdcfe388f15b8c898,
0x8738b909454eb2a0, 0x2bd9cc1110c4e996, 0x655fec303297cd0c,
0xf4090ee8ae0725b1, 0x398c6fed037d19ee, 0xc994a4503b9af26b,
0x75a697b2b5341743, 0x3ccb5b92ac50b9c1, 0xa8329761ffe06205,
0xeb83cadbdfea5242, 0x3c20ee69e79dadf7, 0x7021b97a1e0a6817,
0x176ca776743074fa, 0xeca19beb77fb8af6, 0xaf63b71292baf1de,
0xa4eb8f8cde35c88b, 0x40b464a0e137d5e9, 0x42923bbd87d1cde8,
0x2e2690f3cd8f62ff, 0x59c89f1b095edc16, 0x5138753d1fa8fd5d,
0x80152f18390a2b29, 0xf984d83e2dd8d925, 0xc19e1faf7a872e74,
0xecf9b5d0ed4d542d, 0xc53c0adf9462ea75, 0x37a2d4390caea134,
0x2181327ec8fa2e8a, 0x2d2408206e7bb827, 0x5893d4b850be10e0,
0x1f2b2322ab312bb9, 0xbf627ede440b3f25, 0xb608b89572dac789,
0x86deb3f078787e2a, 0xbb9373f46fee7aab, 0xf7d8b57e27ecf57b,
0x3d04e8d2fca26a9f, 0x3172826ac9df13cb, 0xa8fcd8e0cd9e8d7c,
0x307641d9b2c39497, 0x2608c4cf1cc939c1, 0x3d326a7eb6d1c7bf,
0x8e13e25feeaf19e6, 0x2dfe6d97ee63302b, 0xe41d3cc425971d58,
0xab8db59a0a80627c, 0xe90afb779eea37c8, 0x9ee3352c90ca19cf,
0xfe78d6823613c850, 0x5b060904788f6e50, 0x3fecb534b71bd1a4,
0x20c33857b32c450c, 0x0239f4cea6e9cfda, 0xa19adb9548497187,
0x95aca6a8b492ed8a, 0xcf1b23504dcd6cd9, 0x1a67778cfbe8b12a,
0xc32da38338eb3acc, 0xa03f40a8fb126ab1, 0xe9ce4724ed5bf546,
0x73a130d84c4a74fd, 0xa2ebd6c1d9960e2d, 0x6f233b7c94ab6feb,
0x8e7b9a7349126080, 0xd298f9994b8c9091, 0xa96ddeff35e836b5,
0x6b0dd9bc96119b31, 0x282566fbc6cc3f8d, 0xd6769f3b72b882e7,
0x00fc509ba674343d, 0xd6266a3fdcbf7789, 0x4e89541bae9641fd,
0x53400d0311953407, 0xe5b533458e0dd75a, 0x108b89bc108f19ad,
0xe03b2b6341a4c954, 0x97aced8e437b3d7f, 0x2c5508c2cbd66670,
0x5c4f2ef0650ebc69, 0x9985a2df904ff6bf, 0x5ed8d2399faddd9e,
0xe3e51cb925585832, 0x56c02d9a0ff4f1d4, 0xc1a08a138c4ef804,
0xe6d2767113fd01c8, 0x9d0176cca7c234f4, 0x4d8bfa89d0d73df2,
0x2b17e0b2544f10cd, 0xfd86fe49b70a5c7d, 0x214495bbdf373f41,
0x00d313d584e857fd, 0xa4ba47440496fcbe, 0xaec29e6ee8cac982,
0x7000a51987ec7038, 0xff66e42caeee333b, 0x03b4f63b8afd6b25,
0x5ab8d9c7bd7991dc, 0x48741a6c2ed4684e, 0x2fdc6349af06940d,
0xe974996fb03d7ecd, 0x52ec8721ac7867f9, 0x8edd2d00bcdd9d4a,
0x41c759f83557de06, 0xa75409f23956d4b9, 0xb6100fab123cd8a1,
0x2e8d623b3e7b21e2, 0xbca35f7792959da2, 0x35fcb457200c03a5,
0xf74eb9281bb6c6e4, 0x87cc1d213d5d0b54, 0x18ae42404964046f,
0x8bd2b496d868b275, 0xc234d8f51c5563f4, 0xf9151ffff868e970,
0x271133eeae7be4a2, 0x25254932bb0fd922, 0x104bcd64a60a9fc0,
0x0000006230290145
[TENS_P12_IDX] = 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0x0000000000000000ull, 0x0000000000000000ull, 0x0000000000000000ull,
0xd4724e8d2a67c001ull, 0xf89a1e908efe7ae7ull, 0x54e05154ef084117ull,
0x506be82913b1bb51ull, 0xe599574efb29b172ull, 0x806c0ed3f0da6146ull,
0x45155e93b86ae5beull, 0x7e1e7c34c0591cc2ull, 0x1d1f4cce7c4823daull,
0xd6bfdf759b8ba1e8ull, 0xc2dfae78e341be10ull, 0x0f237f1a016b67b2ull,
0xaf6a25743dbeabcdull, 0x142e0e80cab3e6d7ull, 0x2c23481161959127ull,
0xcb4bf98287009701ull, 0x88052f8cf8169c84ull, 0xbc13176168dde6d4ull,
0x54ab9c41ff0b0905ull, 0x1a1c304e7613b224ull, 0x441c2d473bfe167bull,
0x78f061814f6cea9cull, 0x30c7ae41eb659fb8ull, 0xa1ebcad7947e0d0eull,
0x2130504dd97d9556ull, 0xf2acd5071a8309cbull, 0xfd82373a3f8ec72aull,
0x280f4d3295a842bcull, 0x811a4f04f3618ac0ull, 0xd3967a1b6dc3a5b4ull,
0xdcfe388f15b8c898ull, 0x8738b909454eb2a0ull, 0x2bd9cc1110c4e996ull,
0x655fec303297cd0cull, 0xf4090ee8ae0725b1ull, 0x398c6fed037d19eeull,
0xc994a4503b9af26bull, 0x75a697b2b5341743ull, 0x3ccb5b92ac50b9c1ull,
0xa8329761ffe06205ull, 0xeb83cadbdfea5242ull, 0x3c20ee69e79dadf7ull,
0x7021b97a1e0a6817ull, 0x176ca776743074faull, 0xeca19beb77fb8af6ull,
0xaf63b71292baf1deull, 0xa4eb8f8cde35c88bull, 0x40b464a0e137d5e9ull,
0x42923bbd87d1cde8ull, 0x2e2690f3cd8f62ffull, 0x59c89f1b095edc16ull,
0x5138753d1fa8fd5dull, 0x80152f18390a2b29ull, 0xf984d83e2dd8d925ull,
0xc19e1faf7a872e74ull, 0xecf9b5d0ed4d542dull, 0xc53c0adf9462ea75ull,
0x37a2d4390caea134ull, 0x2181327ec8fa2e8aull, 0x2d2408206e7bb827ull,
0x5893d4b850be10e0ull, 0x1f2b2322ab312bb9ull, 0xbf627ede440b3f25ull,
0xb608b89572dac789ull, 0x86deb3f078787e2aull, 0xbb9373f46fee7aabull,
0xf7d8b57e27ecf57bull, 0x3d04e8d2fca26a9full, 0x3172826ac9df13cbull,
0xa8fcd8e0cd9e8d7cull, 0x307641d9b2c39497ull, 0x2608c4cf1cc939c1ull,
0x3d326a7eb6d1c7bfull, 0x8e13e25feeaf19e6ull, 0x2dfe6d97ee63302bull,
0xe41d3cc425971d58ull, 0xab8db59a0a80627cull, 0xe90afb779eea37c8ull,
0x9ee3352c90ca19cfull, 0xfe78d6823613c850ull, 0x5b060904788f6e50ull,
0x3fecb534b71bd1a4ull, 0x20c33857b32c450cull, 0x0239f4cea6e9cfdaull,
0xa19adb9548497187ull, 0x95aca6a8b492ed8aull, 0xcf1b23504dcd6cd9ull,
0x1a67778cfbe8b12aull, 0xc32da38338eb3accull, 0xa03f40a8fb126ab1ull,
0xe9ce4724ed5bf546ull, 0x73a130d84c4a74fdull, 0xa2ebd6c1d9960e2dull,
0x6f233b7c94ab6febull, 0x8e7b9a7349126080ull, 0xd298f9994b8c9091ull,
0xa96ddeff35e836b5ull, 0x6b0dd9bc96119b31ull, 0x282566fbc6cc3f8dull,
0xd6769f3b72b882e7ull, 0x00fc509ba674343dull, 0xd6266a3fdcbf7789ull,
0x4e89541bae9641fdull, 0x53400d0311953407ull, 0xe5b533458e0dd75aull,
0x108b89bc108f19adull, 0xe03b2b6341a4c954ull, 0x97aced8e437b3d7full,
0x2c5508c2cbd66670ull, 0x5c4f2ef0650ebc69ull, 0x9985a2df904ff6bfull,
0x5ed8d2399faddd9eull, 0xe3e51cb925585832ull, 0x56c02d9a0ff4f1d4ull,
0xc1a08a138c4ef804ull, 0xe6d2767113fd01c8ull, 0x9d0176cca7c234f4ull,
0x4d8bfa89d0d73df2ull, 0x2b17e0b2544f10cdull, 0xfd86fe49b70a5c7dull,
0x214495bbdf373f41ull, 0x00d313d584e857fdull, 0xa4ba47440496fcbeull,
0xaec29e6ee8cac982ull, 0x7000a51987ec7038ull, 0xff66e42caeee333bull,
0x03b4f63b8afd6b25ull, 0x5ab8d9c7bd7991dcull, 0x48741a6c2ed4684eull,
0x2fdc6349af06940dull, 0xe974996fb03d7ecdull, 0x52ec8721ac7867f9ull,
0x8edd2d00bcdd9d4aull, 0x41c759f83557de06ull, 0xa75409f23956d4b9ull,
0xb6100fab123cd8a1ull, 0x2e8d623b3e7b21e2ull, 0xbca35f7792959da2ull,
0x35fcb457200c03a5ull, 0xf74eb9281bb6c6e4ull, 0x87cc1d213d5d0b54ull,
0x18ae42404964046full, 0x8bd2b496d868b275ull, 0xc234d8f51c5563f4ull,
0xf9151ffff868e970ull, 0x271133eeae7be4a2ull, 0x25254932bb0fd922ull,
0x104bcd64a60a9fc0ull, 0x0000006230290145ull
#endif
};

View file

@ -157,7 +157,7 @@ extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
# define MAX_FAC_PER_LIMB 1000000000UL
#elif BITS_PER_MP_LIMB == 64
# define MAX_DIG_PER_LIMB 19
# define MAX_FAC_PER_LIMB 10000000000000000000UL
# define MAX_FAC_PER_LIMB 10000000000000000000ULL
#else
# error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
#endif
@ -166,14 +166,14 @@ extern FLOAT MPN2FLOAT (mp_srcptr mpn, int exponent, int negative);
/* Local data structure. */
static const mp_limb_t _tens_in_limb[MAX_DIG_PER_LIMB + 1] =
{ 0, 10, 100,
1000, 10000, 100000,
1000000, 10000000, 100000000,
1000000000
1000, 10000, 100000L,
1000000L, 10000000L, 100000000L,
1000000000L
#if BITS_PER_MP_LIMB > 32
, 10000000000U, 100000000000U,
1000000000000U, 10000000000000U, 100000000000000U,
1000000000000000U, 10000000000000000U, 100000000000000000U,
1000000000000000000U, 10000000000000000000U
, 10000000000ULL, 100000000000ULL,
1000000000000ULL, 10000000000000ULL, 100000000000000ULL,
1000000000000000ULL, 10000000000000000ULL, 100000000000000000ULL,
1000000000000000000ULL, 10000000000000000000ULL
#endif
#if BITS_PER_MP_LIMB > 64
#error "Need to expand tens_in_limb table to" MAX_DIG_PER_LIMB

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1993,1994,1995,1996,1997,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -45,7 +45,7 @@ __mpn_extract_double (mp_ptr res_ptr, mp_size_t size,
#elif BITS_PER_MP_LIMB == 64
/* Hopefully the compiler will combine the two bitfield extracts
and this composition into just the original quadword extract. */
res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
#define N 1
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
@ -101,7 +101,8 @@ __mpn_extract_double (mp_ptr res_ptr, mp_size_t size,
}
else
/* Add the implicit leading one bit for a normalized number. */
res_ptr[N - 1] |= 1L << (DBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
res_ptr[N - 1] |= (mp_limb_t) 1 << (DBL_MANT_DIG - 1
- ((N - 1) * BITS_PER_MP_LIMB));
return N;
}

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -34,10 +34,12 @@ __mpn_construct_double (mp_srcptr frac_ptr, int expt, int negative)
u.ieee.exponent = expt + IEEE754_DOUBLE_BIAS;
#if BITS_PER_MP_LIMB == 32
u.ieee.mantissa1 = frac_ptr[0];
u.ieee.mantissa0 = frac_ptr[1] & ((1 << (DBL_MANT_DIG - 32)) - 1);
u.ieee.mantissa0 = frac_ptr[1] & (((mp_limb_t) 1
<< (DBL_MANT_DIG - 32)) - 1);
#elif BITS_PER_MP_LIMB == 64
u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
u.ieee.mantissa0 = (frac_ptr[0] >> 32) & ((1 << (DBL_MANT_DIG - 32)) - 1);
u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
u.ieee.mantissa0 = (frac_ptr[0] >> 32) & (((mp_limb_t) 1
<< (DBL_MANT_DIG - 32)) - 1);
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
#endif

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1995,1997,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -33,7 +33,7 @@ __mpn_construct_float (mp_srcptr frac_ptr, int expt, int sign)
u.ieee.negative = sign;
u.ieee.exponent = expt + IEEE754_FLOAT_BIAS;
#if BITS_PER_MP_LIMB > FLT_MANT_DIG
u.ieee.mantissa = frac_ptr[0] & ((1 << FLT_MANT_DIG) - 1);
u.ieee.mantissa = frac_ptr[0] & (((mp_limb_t) 1 << FLT_MANT_DIG) - 1);
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
#endif

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -49,8 +50,8 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
#elif BITS_PER_MP_LIMB == 64
/* Hopefully the compiler will combine the two bitfield extracts
and this composition into just the original quadword extract. */
res_ptr[0] = ((unsigned long int) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
res_ptr[1] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
res_ptr[0] = ((mp_limb_t) u.ieee.mantissa2 << 32) | u.ieee.mantissa3;
res_ptr[1] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
#define N 2
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
@ -133,7 +134,8 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
}
else
/* Add the implicit leading one bit for a normalized number. */
res_ptr[N - 1] |= 1L << (LDBL_MANT_DIG - 1 - ((N - 1) * BITS_PER_MP_LIMB));
res_ptr[N - 1] |= (mp_limb_t) 1 << (LDBL_MANT_DIG - 1
- ((N - 1) * BITS_PER_MP_LIMB));
return N;
}

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,1998,1999,2002,2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -37,12 +38,14 @@ __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
u.ieee.mantissa3 = frac_ptr[0];
u.ieee.mantissa2 = frac_ptr[1];
u.ieee.mantissa1 = frac_ptr[2];
u.ieee.mantissa0 = frac_ptr[3] & ((1 << (LDBL_MANT_DIG - 96)) - 1);
u.ieee.mantissa0 = frac_ptr[3] & (((mp_limb_t) 1
<< (LDBL_MANT_DIG - 96)) - 1);
#elif BITS_PER_MP_LIMB == 64
u.ieee.mantissa3 = frac_ptr[0] & ((1L << 32) - 1);
u.ieee.mantissa3 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
u.ieee.mantissa2 = frac_ptr[0] >> 32;
u.ieee.mantissa1 = frac_ptr[1] & ((1L << 32) - 1);
u.ieee.mantissa0 = (frac_ptr[1] >> 32) & ((1 << (LDBL_MANT_DIG - 96)) - 1);
u.ieee.mantissa1 = frac_ptr[1] & (((mp_limb_t) 1 << 32) - 1);
u.ieee.mantissa0 = (frac_ptr[1] >> 32) & (((mp_limb_t) 1
<< (LDBL_MANT_DIG - 96)) - 1);
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"
#endif

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -47,7 +47,7 @@ __mpn_extract_long_double (mp_ptr res_ptr, mp_size_t size,
#elif BITS_PER_MP_LIMB == 64
/* Hopefully the compiler will combine the two bitfield extracts
and this composition into just the original quadword extract. */
res_ptr[0] = ((unsigned long int) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
res_ptr[0] = ((mp_limb_t) u.ieee.mantissa0 << 32) | u.ieee.mantissa1;
#define N 1
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,1998,2002,2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -37,7 +37,7 @@ __mpn_construct_long_double (mp_srcptr frac_ptr, int expt, int sign)
u.ieee.mantissa1 = frac_ptr[0];
u.ieee.mantissa0 = frac_ptr[1];
#elif BITS_PER_MP_LIMB == 64
u.ieee.mantissa1 = frac_ptr[0] & ((1L << 32) - 1);
u.ieee.mantissa1 = frac_ptr[0] & (((mp_limb_t) 1 << 32) - 1);
u.ieee.mantissa0 = frac_ptr[0] >> 32;
#else
#error "mp_limb size " BITS_PER_MP_LIMB "not accounted for"

View file

@ -1,7 +1,7 @@
/* MIPS2 __mpn_add_n -- Add two limb vectors of the same length > 0 and
store sum in a third limb vector.
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -43,12 +43,12 @@ ENTRY (__mpn_add_n)
addiu $7,$7,-1
and $9,$7,4-1 /* number of limbs in first loop */
beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
move $2,$0
subu $7,$7,$9
.Loop0: addiu $9,$9,-1
L(Loop0): addiu $9,$9,-1
lw $12,4($5)
addu $11,$11,$2
lw $13,4($6)
@ -62,13 +62,13 @@ ENTRY (__mpn_add_n)
addiu $6,$6,4
move $10,$12
move $11,$13
bne $9,$0,.Loop0
addiu $4,$4,4
bne $9,$0,L(Loop0)
addiu $4,$4,4
.L0: beq $7,$0,.Lend
nop
L(L0): beq $7,$0,L(end)
nop
.Loop: addiu $7,$7,-4
L(Loop): addiu $7,$7,-4
lw $12,4($5)
addu $11,$11,$2
@ -109,10 +109,10 @@ ENTRY (__mpn_add_n)
addiu $5,$5,16
addiu $6,$6,16
bne $7,$0,.Loop
addiu $4,$4,16
bne $7,$0,L(Loop)
addiu $4,$4,16
.Lend: addu $11,$11,$2
L(end): addu $11,$11,$2
sltu $8,$11,$2
addu $11,$10,$11
sltu $2,$11,$10

View file

@ -1,7 +1,7 @@
/* MIPS __mpn_addmul_1 -- Multiply a limb vector with a single limb and
add the product to a second limb vector.
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -46,14 +46,14 @@ ENTRY (__mpn_addmul_1)
multu $8,$7
addiu $6,$6,-1
beq $6,$0,$LC0
beq $6,$0,L(LC0)
move $2,$0 /* zero cy2 */
addiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
lw $8,0($5) /* load new s1 limb as early as possible */
Loop: lw $10,0($4)
L(Loop): lw $10,0($4)
mflo $3
mfhi $9
addiu $5,$5,4
@ -67,11 +67,11 @@ Loop: lw $10,0($4)
addu $2,$2,$10
sw $3,0($4)
addiu $4,$4,4
bne $6,$0,Loop /* should be "bnel" */
bne $6,$0,L(Loop) /* should be "bnel" */
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 1 */
$LC1: lw $10,0($4)
L(LC1): lw $10,0($4)
mflo $3
mfhi $9
addu $3,$3,$2
@ -85,7 +85,7 @@ $LC1: lw $10,0($4)
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 0 */
$LC0: lw $10,0($4)
L(LC0): lw $10,0($4)
mflo $3
mfhi $9
addu $3,$3,$2

View file

@ -1,6 +1,6 @@
/* MIPS2 __mpn_lshift --
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -44,12 +44,12 @@ ENTRY (__mpn_lshift)
addu $4,$4,$2 /* make r4 point at end of res */
addiu $6,$6,-1
and $9,$6,4-1 /* number of limbs in first loop */
beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
srl $2,$10,$13 /* compute function result */
beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
srl $2,$10,$13 /* compute function result */
subu $6,$6,$9
.Loop0: lw $3,-8($5)
L(Loop0): lw $3,-8($5)
addiu $4,$4,-4
addiu $5,$5,-4
addiu $9,$9,-1
@ -57,13 +57,13 @@ ENTRY (__mpn_lshift)
srl $12,$3,$13
move $10,$3
or $8,$11,$12
bne $9,$0,.Loop0
sw $8,0($4)
bne $9,$0,L(Loop0)
sw $8,0($4)
.L0: beq $6,$0,.Lend
nop
L(L0): beq $6,$0,L(Lend)
nop
.Loop: lw $3,-8($5)
L(Loop): lw $3,-8($5)
addiu $4,$4,-16
addiu $6,$6,-4
sll $11,$10,$7
@ -89,10 +89,10 @@ ENTRY (__mpn_lshift)
addiu $5,$5,-16
or $8,$14,$9
bgtz $6,.Loop
sw $8,0($4)
bgtz $6,L(Loop)
sw $8,0($4)
.Lend: sll $8,$10,$7
L(Lend): sll $8,$10,$7
j $31
sw $8,-4($4)
END (__mpn_lshift)

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2002 Free Software Foundation, Inc.
/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
@ -44,27 +44,27 @@ ENTRY (memcpy)
.set noreorder
slti t0, a2, 8 # Less than 8?
bne t0, zero, $last8
bne t0, zero, L(last8)
move v0, a0 # Setup exit value before too late
xor t0, a1, a0 # Find a0/a1 displacement
andi t0, 0x3
bne t0, zero, $shift # Go handle the unaligned case
bne t0, zero, L(shift) # Go handle the unaligned case
subu t1, zero, a1
andi t1, 0x3 # a0/a1 are aligned, but are we
beq t1, zero, $chk8w # starting in the middle of a word?
beq t1, zero, L(chk8w) # starting in the middle of a word?
subu a2, t1
LWHI t0, 0(a1) # Yes we are... take care of that
addu a1, t1
SWHI t0, 0(a0)
addu a0, t1
$chk8w: andi t0, a2, 0x1f # 32 or more bytes left?
beq t0, a2, $chk1w
L(chk8w): andi t0, a2, 0x1f # 32 or more bytes left?
beq t0, a2, L(chk1w)
subu a3, a2, t0 # Yes
addu a3, a1 # a3 = end address of loop
move a2, t0 # a2 = what will be left after loop
$lop8w: lw t0, 0(a1) # Loop taking 8 words at a time
L(lop8w): lw t0, 0(a1) # Loop taking 8 words at a time
lw t1, 4(a1)
lw t2, 8(a1)
lw t3, 12(a1)
@ -81,49 +81,49 @@ $lop8w: lw t0, 0(a1) # Loop taking 8 words at a time
sw t4, -16(a0)
sw t5, -12(a0)
sw t6, -8(a0)
bne a1, a3, $lop8w
bne a1, a3, L(lop8w)
sw t7, -4(a0)
$chk1w: andi t0, a2, 0x3 # 4 or more bytes left?
beq t0, a2, $last8
L(chk1w): andi t0, a2, 0x3 # 4 or more bytes left?
beq t0, a2, L(last8)
subu a3, a2, t0 # Yes, handle them one word at a time
addu a3, a1 # a3 again end address
move a2, t0
$lop1w: lw t0, 0(a1)
L(lop1w): lw t0, 0(a1)
addiu a0, 4
addiu a1, 4
bne a1, a3, $lop1w
bne a1, a3, L(lop1w)
sw t0, -4(a0)
$last8: blez a2, $lst8e # Handle last 8 bytes, one at a time
L(last8): blez a2, L(lst8e) # Handle last 8 bytes, one at a time
addu a3, a2, a1
$lst8l: lb t0, 0(a1)
L(lst8l): lb t0, 0(a1)
addiu a0, 1
addiu a1, 1
bne a1, a3, $lst8l
bne a1, a3, L(lst8l)
sb t0, -1(a0)
$lst8e: jr ra # Bye, bye
L(lst8e): jr ra # Bye, bye
nop
$shift: subu a3, zero, a0 # Src and Dest unaligned
L(shift): subu a3, zero, a0 # Src and Dest unaligned
andi a3, 0x3 # (unoptimized case...)
beq a3, zero, $shft1
beq a3, zero, L(shft1)
subu a2, a3 # a2 = bytes left
LWHI t0, 0(a1) # Take care of first odd part
LWLO t0, 3(a1)
addu a1, a3
SWHI t0, 0(a0)
addu a0, a3
$shft1: andi t0, a2, 0x3
L(shft1): andi t0, a2, 0x3
subu a3, a2, t0
addu a3, a1
$shfth: LWHI t1, 0(a1) # Limp through, word by word
L(shfth): LWHI t1, 0(a1) # Limp through, word by word
LWLO t1, 3(a1)
addiu a0, 4
addiu a1, 4
bne a1, a3, $shfth
bne a1, a3, L(shfth)
sw t1, -4(a0)
b $last8 # Handle anything which may be left
b L(last8) # Handle anything which may be left
move a2, t0
.set reorder

View file

@ -1,4 +1,4 @@
/* Copyright (C) 2002 Free Software Foundation, Inc.
/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Hartvig Ekner <hartvige@mips.com>, 2002.
@ -38,45 +38,45 @@ ENTRY (memset)
.set noreorder
slti t1, a2, 8 # Less than 8?
bne t1, zero, $last8
bne t1, zero, L(last8)
move v0, a0 # Setup exit value before too late
beq a1, zero, $ueven # If zero pattern, no need to extend
beq a1, zero, L(ueven) # If zero pattern, no need to extend
andi a1, 0xff # Avoid problems with bogus arguments
sll t0, a1, 8
or a1, t0
sll t0, a1, 16
or a1, t0 # a1 is now pattern in full word
$ueven: subu t0, zero, a0 # Unaligned address?
L(ueven): subu t0, zero, a0 # Unaligned address?
andi t0, 0x3
beq t0, zero, $chkw
beq t0, zero, L(chkw)
subu a2, t0
SWHI a1, 0(a0) # Yes, handle first unaligned part
addu a0, t0 # Now both a0 and a2 are updated
$chkw: andi t0, a2, 0x7 # Enough left for one loop iteration?
beq t0, a2, $chkl
L(chkw): andi t0, a2, 0x7 # Enough left for one loop iteration?
beq t0, a2, L(chkl)
subu a3, a2, t0
addu a3, a0 # a3 is last loop address +1
move a2, t0 # a2 is now # of bytes left after loop
$loopw: addiu a0, 8 # Handle 2 words pr. iteration
L(loopw): addiu a0, 8 # Handle 2 words pr. iteration
sw a1, -8(a0)
bne a0, a3, $loopw
bne a0, a3, L(loopw)
sw a1, -4(a0)
$chkl: andi t0, a2, 0x4 # Check if there is at least a full
beq t0, zero, $last8 # word remaining after the loop
L(chkl): andi t0, a2, 0x4 # Check if there is at least a full
beq t0, zero, L(last8) # word remaining after the loop
subu a2, t0
sw a1, 0(a0) # Yes...
addiu a0, 4
$last8: blez a2, $exit # Handle last 8 bytes (if cnt>0)
L(last8): blez a2, L(exit) # Handle last 8 bytes (if cnt>0)
addu a3, a2, a0 # a3 is last address +1
$lst8l: addiu a0, 1
bne a0, a3, $lst8l
L(lst8l): addiu a0, 1
bne a0, a3, L(lst8l)
sb a1, -1(a0)
$exit: j ra # Bye, bye
L(exit): j ra # Bye, bye
nop
.set reorder

View file

@ -1,7 +1,7 @@
/* MIPS3 __mpn_add_n -- Add two limb vectors of the same length > 0 and
* store sum in a third limb vector.
*
* Copyright (C) 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -22,6 +22,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/*
* INPUT PARAMETERS
@ -38,10 +39,10 @@
.globl __mpn_add_n
.ent __mpn_add_n
__mpn_add_n:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
ld $10,0($5)
@ -49,12 +50,12 @@ __mpn_add_n:
daddiu $7,$7,-1
and $9,$7,4-1 # number of limbs in first loop
beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
move $2,$0
beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
move $2,$0
dsubu $7,$7,$9
.Loop0: daddiu $9,$9,-1
L(Loop0): daddiu $9,$9,-1
ld $12,8($5)
daddu $11,$11,$2
ld $13,8($6)
@ -68,13 +69,13 @@ __mpn_add_n:
daddiu $6,$6,8
move $10,$12
move $11,$13
bne $9,$0,.Loop0
daddiu $4,$4,8
bne $9,$0,L(Loop0)
daddiu $4,$4,8
.L0: beq $7,$0,.Lend
nop
L(L0): beq $7,$0,L(Lend)
nop
.Loop: daddiu $7,$7,-4
L(Loop): daddiu $7,$7,-4
ld $12,8($5)
daddu $11,$11,$2
@ -115,10 +116,10 @@ __mpn_add_n:
daddiu $5,$5,32
daddiu $6,$6,32
bne $7,$0,.Loop
daddiu $4,$4,32
bne $7,$0,L(Loop)
daddiu $4,$4,32
.Lend: daddu $11,$11,$2
L(Lend): daddu $11,$11,$2
sltu $8,$11,$2
daddu $11,$10,$11
sltu $2,$11,$10

View file

@ -1,7 +1,7 @@
/* MIPS3 __mpn_addmul_1 -- Multiply a limb vector with a single limb and
* add the product to a second limb vector.
*
* Copyright (C) 1992, 1994, 1995 Free Software Foundation, Inc.
* Copyright (C) 1992, 1994, 1995, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -22,6 +22,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -38,10 +39,10 @@
.globl __mpn_addmul_1
.ent __mpn_addmul_1
__mpn_addmul_1:
.set noreorder
#ifdef PIC
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
# warm up phase 0
@ -52,14 +53,14 @@ __mpn_addmul_1:
dmultu $8,$7
daddiu $6,$6,-1
beq $6,$0,$LC0
move $2,$0 # zero cy2
beq $6,$0,L(LC0)
move $2,$0 # zero cy2
daddiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
ld $8,0($5) # load new s1 limb as early as possible
Loop: ld $10,0($4)
L(Loop): ld $10,0($4)
mflo $3
mfhi $9
daddiu $5,$5,8
@ -73,11 +74,11 @@ Loop: ld $10,0($4)
daddu $2,$2,$10
sd $3,0($4)
daddiu $4,$4,8
bne $6,$0,Loop
daddu $2,$9,$2 # add high product limb and carry from addition
bne $6,$0,L(Loop)
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 1
$LC1: ld $10,0($4)
L(LC1): ld $10,0($4)
mflo $3
mfhi $9
daddu $3,$3,$2
@ -91,7 +92,7 @@ $LC1: ld $10,0($4)
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 0
$LC0: ld $10,0($4)
L(LC0): ld $10,0($4)
mflo $3
mfhi $9
daddu $3,$3,$2

View file

@ -1,6 +1,6 @@
/* MIPS3 __mpn_lshift --
*
* Copyright (C) 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -21,6 +21,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -37,10 +38,10 @@
.globl __mpn_lshift
.ent __mpn_lshift
__mpn_lshift:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
dsll $2,$6,3
@ -50,12 +51,12 @@ __mpn_lshift:
daddu $4,$4,$2 # make r4 point at end of res
daddiu $6,$6,-1
and $9,$6,4-1 # number of limbs in first loop
beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
dsrl $2,$10,$13 # compute function result
beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
dsrl $2,$10,$13 # compute function result
dsubu $6,$6,$9
.Loop0: ld $3,-16($5)
L(Loop0): ld $3,-16($5)
daddiu $4,$4,-8
daddiu $5,$5,-8
daddiu $9,$9,-1
@ -63,13 +64,13 @@ __mpn_lshift:
dsrl $12,$3,$13
move $10,$3
or $8,$11,$12
bne $9,$0,.Loop0
sd $8,0($4)
bne $9,$0,L(Loop0)
sd $8,0($4)
.L0: beq $6,$0,.Lend
nop
L(L0): beq $6,$0,L(Lend)
nop
.Loop: ld $3,-16($5)
L(Loop): ld $3,-16($5)
daddiu $4,$4,-32
daddiu $6,$6,-4
dsll $11,$10,$7
@ -95,10 +96,10 @@ __mpn_lshift:
daddiu $5,$5,-32
or $8,$14,$9
bgtz $6,.Loop
sd $8,0($4)
bgtz $6,L(Loop)
sd $8,0($4)
.Lend: dsll $8,$10,$7
L(Lend): dsll $8,$10,$7
j $31
sd $8,-8($4)
.end __mpn_lshift

View file

@ -1,7 +1,8 @@
/* MIPS3 __mpn_mul_1 -- Multiply a limb vector with a single limb and
* store the product in a second limb vector.
*
* Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
* Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -22,6 +23,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -38,10 +40,10 @@
.globl __mpn_mul_1
.ent __mpn_mul_1
__mpn_mul_1:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
# warm up phase 0
@ -52,14 +54,14 @@ __mpn_mul_1:
dmultu $8,$7
daddiu $6,$6,-1
beq $6,$0,$LC0
move $2,$0 # zero cy2
beq $6,$0,L(LC0)
move $2,$0 # zero cy2
daddiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
ld $8,0($5) # load new s1 limb as early as possible
Loop: mflo $10
L(Loop): mflo $10
mfhi $9
daddiu $5,$5,8
daddu $10,$10,$2 # add old carry limb to low product limb
@ -69,11 +71,11 @@ Loop: mflo $10
sltu $2,$10,$2 # carry from previous addition -> $2
sd $10,0($4)
daddiu $4,$4,8
bne $6,$0,Loop
daddu $2,$9,$2 # add high product limb and carry from addition
bne $6,$0,L(Loop)
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 1
$LC1: mflo $10
L(LC1): mflo $10
mfhi $9
daddu $10,$10,$2
sltu $2,$10,$2
@ -83,7 +85,7 @@ $LC1: mflo $10
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 0
$LC0: mflo $10
L(LC0): mflo $10
mfhi $9
daddu $10,$10,$2
sltu $2,$10,$2

View file

@ -1,6 +1,6 @@
/* MIPS3 __mpn_rshift --
*
* Copyright (C) 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -21,6 +21,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -37,22 +38,22 @@
.globl __mpn_rshift
.ent __mpn_rshift
__mpn_rshift:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
ld $10,0($5) # load first limb
dsubu $13,$0,$7
daddiu $6,$6,-1
and $9,$6,4-1 # number of limbs in first loop
beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
dsll $2,$10,$13 # compute function result
beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
dsll $2,$10,$13 # compute function result
dsubu $6,$6,$9
.Loop0: ld $3,8($5)
L(Loop0): ld $3,8($5)
daddiu $4,$4,8
daddiu $5,$5,8
daddiu $9,$9,-1
@ -60,13 +61,13 @@ __mpn_rshift:
dsll $12,$3,$13
move $10,$3
or $8,$11,$12
bne $9,$0,.Loop0
sd $8,-8($4)
bne $9,$0,L(Loop0)
sd $8,-8($4)
.L0: beq $6,$0,.Lend
nop
L(L0): beq $6,$0,L(Lend)
nop
.Loop: ld $3,8($5)
L(Loop): ld $3,8($5)
daddiu $4,$4,32
daddiu $6,$6,-4
dsrl $11,$10,$7
@ -92,10 +93,10 @@ __mpn_rshift:
daddiu $5,$5,32
or $8,$14,$9
bgtz $6,.Loop
sd $8,-8($4)
bgtz $6,L(Loop)
sd $8,-8($4)
.Lend: dsrl $8,$10,$7
L(Lend): dsrl $8,$10,$7
j $31
sd $8,0($4)
.end __mpn_rshift

View file

@ -1,7 +1,7 @@
/* MIPS3 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
* store difference in a third limb vector.
*
* Copyright (C) 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -22,6 +22,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -38,10 +39,10 @@
.globl __mpn_sub_n
.ent __mpn_sub_n
__mpn_sub_n:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
ld $10,0($5)
@ -49,12 +50,12 @@ __mpn_sub_n:
daddiu $7,$7,-1
and $9,$7,4-1 # number of limbs in first loop
beq $9,$0,.L0 # if multiple of 4 limbs, skip first loop
move $2,$0
beq $9,$0,L(L0) # if multiple of 4 limbs, skip first loop
move $2,$0
dsubu $7,$7,$9
.Loop0: daddiu $9,$9,-1
L(Loop0): daddiu $9,$9,-1
ld $12,8($5)
daddu $11,$11,$2
ld $13,8($6)
@ -68,13 +69,13 @@ __mpn_sub_n:
daddiu $6,$6,8
move $10,$12
move $11,$13
bne $9,$0,.Loop0
daddiu $4,$4,8
bne $9,$0,L(Loop0)
daddiu $4,$4,8
.L0: beq $7,$0,.Lend
nop
L(L0): beq $7,$0,L(Lend)
nop
.Loop: daddiu $7,$7,-4
L(Loop): daddiu $7,$7,-4
ld $12,8($5)
daddu $11,$11,$2
@ -115,10 +116,10 @@ __mpn_sub_n:
daddiu $5,$5,32
daddiu $6,$6,32
bne $7,$0,.Loop
daddiu $4,$4,32
bne $7,$0,L(Loop)
daddiu $4,$4,32
.Lend: daddu $11,$11,$2
L(Lend): daddu $11,$11,$2
sltu $8,$11,$2
dsubu $11,$10,$11
sltu $2,$10,$11

View file

@ -1,7 +1,8 @@
/* MIPS3 __mpn_submul_1 -- Multiply a limb vector with a single limb and
* subtract the product from a second limb vector.
*
* Copyright (C) 1992, 1994, 1995, 2000 Free Software Foundation, Inc.
* Copyright (C) 1992, 1994, 1995, 2000, 2002, 2003
* Free Software Foundation, Inc.
*
* This file is part of the GNU MP Library.
*
@ -22,6 +23,7 @@
*/
#include <sysdep.h>
#include <sys/asm.h>
/* INPUT PARAMETERS
* res_ptr $4
@ -38,10 +40,10 @@
.globl __mpn_submul_1
.ent __mpn_submul_1
__mpn_submul_1:
.set noreorder
#ifdef __PIC__
.cpload t9
SETUP_GP /* ??? unused */
#endif
.set noreorder
.set nomacro
# warm up phase 0
@ -52,14 +54,14 @@ __mpn_submul_1:
dmultu $8,$7
daddiu $6,$6,-1
beq $6,$0,$LC0
move $2,$0 # zero cy2
beq $6,$0,L(LC0)
move $2,$0 # zero cy2
daddiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
ld $8,0($5) # load new s1 limb as early as possible
Loop: ld $10,0($4)
L(Loop): ld $10,0($4)
mflo $3
mfhi $9
daddiu $5,$5,8
@ -73,11 +75,11 @@ Loop: ld $10,0($4)
daddu $2,$2,$10
sd $3,0($4)
daddiu $4,$4,8
bne $6,$0,Loop
daddu $2,$9,$2 # add high product limb and carry from addition
bne $6,$0,L(Loop)
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 1
$LC1: ld $10,0($4)
L(LC1): ld $10,0($4)
mflo $3
mfhi $9
daddu $3,$3,$2
@ -91,7 +93,7 @@ $LC1: ld $10,0($4)
daddu $2,$9,$2 # add high product limb and carry from addition
# cool down phase 0
$LC0: ld $10,0($4)
L(LC0): ld $10,0($4)
mflo $3
mfhi $9
daddu $3,$3,$2

View file

@ -1,7 +1,7 @@
/* MIPS __mpn_mul_1 -- Multiply a limb vector with a single limb and
store the product in a second limb vector.
Copyright (C) 1995, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 1998, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -46,14 +46,14 @@ ENTRY (__mpn_mul_1)
multu $8,$7
addiu $6,$6,-1
beq $6,$0,$LC0
beq $6,$0,L(LC0)
move $2,$0 /* zero cy2 */
addiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
lw $8,0($5) /* load new s1 limb as early as possible */
Loop: mflo $10
L(Loop): mflo $10
mfhi $9
addiu $5,$5,4
addu $10,$10,$2 /* add old carry limb to low product limb */
@ -63,11 +63,11 @@ Loop: mflo $10
sltu $2,$10,$2 /* carry from previous addition -> $2 */
sw $10,0($4)
addiu $4,$4,4
bne $6,$0,Loop /* should be "bnel" */
bne $6,$0,L(Loop) /* should be "bnel" */
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 1 */
$LC1: mflo $10
L(LC1): mflo $10
mfhi $9
addu $10,$10,$2
sltu $2,$10,$2
@ -77,7 +77,7 @@ $LC1: mflo $10
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 0 */
$LC0: mflo $10
L(LC0): mflo $10
mfhi $9
addu $10,$10,$2
sltu $2,$10,$2

View file

@ -1,6 +1,6 @@
/* MIPS2 __mpn_rshift --
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -41,12 +41,12 @@ ENTRY (__mpn_rshift)
subu $13,$0,$7
addiu $6,$6,-1
and $9,$6,4-1 /* number of limbs in first loop */
beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop*/
beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop*/
sll $2,$10,$13 /* compute function result */
subu $6,$6,$9
.Loop0: lw $3,4($5)
L(Loop0): lw $3,4($5)
addiu $4,$4,4
addiu $5,$5,4
addiu $9,$9,-1
@ -54,13 +54,13 @@ ENTRY (__mpn_rshift)
sll $12,$3,$13
move $10,$3
or $8,$11,$12
bne $9,$0,.Loop0
bne $9,$0,L(Loop0)
sw $8,-4($4)
.L0: beq $6,$0,.Lend
L(L0): beq $6,$0,L(Lend)
nop
.Loop: lw $3,4($5)
L(Loop): lw $3,4($5)
addiu $4,$4,16
addiu $6,$6,-4
srl $11,$10,$7
@ -86,10 +86,10 @@ ENTRY (__mpn_rshift)
addiu $5,$5,16
or $8,$14,$9
bgtz $6,.Loop
bgtz $6,L(Loop)
sw $8,-4($4)
.Lend: srl $8,$10,$7
L(Lend): srl $8,$10,$7
j $31
sw $8,0($4)
END (__mpn_rshift)

View file

@ -1,7 +1,7 @@
/* MIPS2 __mpn_sub_n -- Subtract two limb vectors of the same length > 0 and
store difference in a third limb vector.
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -43,12 +43,12 @@ ENTRY (__mpn_sub_n)
addiu $7,$7,-1
and $9,$7,4-1 /* number of limbs in first loop */
beq $9,$0,.L0 /* if multiple of 4 limbs, skip first loop */
move $2,$0
beq $9,$0,L(L0) /* if multiple of 4 limbs, skip first loop */
move $2,$0
subu $7,$7,$9
.Loop0: addiu $9,$9,-1
L(Loop0): addiu $9,$9,-1
lw $12,4($5)
addu $11,$11,$2
lw $13,4($6)
@ -62,13 +62,13 @@ ENTRY (__mpn_sub_n)
addiu $6,$6,4
move $10,$12
move $11,$13
bne $9,$0,.Loop0
addiu $4,$4,4
bne $9,$0,L(Loop0)
addiu $4,$4,4
.L0: beq $7,$0,.Lend
nop
L(L0): beq $7,$0,L(Lend)
nop
.Loop: addiu $7,$7,-4
L(Loop): addiu $7,$7,-4
lw $12,4($5)
addu $11,$11,$2
@ -109,10 +109,10 @@ ENTRY (__mpn_sub_n)
addiu $5,$5,16
addiu $6,$6,16
bne $7,$0,.Loop
addiu $4,$4,16
bne $7,$0,L(Loop)
addiu $4,$4,16
.Lend: addu $11,$11,$2
L(Lend): addu $11,$11,$2
sltu $8,$11,$2
subu $11,$10,$11
sltu $2,$10,$11

View file

@ -1,7 +1,7 @@
/* MIPS __mpn_submul_1 -- Multiply a limb vector with a single limb and
subtract the product from a second limb vector.
Copyright (C) 1995, 2000 Free Software Foundation, Inc.
Copyright (C) 1995, 2000, 2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU MP Library.
@ -46,14 +46,14 @@ ENTRY (__mpn_submul_1)
multu $8,$7
addiu $6,$6,-1
beq $6,$0,$LC0
beq $6,$0,L(LC0)
move $2,$0 /* zero cy2 */
addiu $6,$6,-1
beq $6,$0,$LC1
beq $6,$0,L(LC1)
lw $8,0($5) /* load new s1 limb as early as possible */
Loop: lw $10,0($4)
L(Loop): lw $10,0($4)
mflo $3
mfhi $9
addiu $5,$5,4
@ -67,11 +67,11 @@ Loop: lw $10,0($4)
addu $2,$2,$10
sw $3,0($4)
addiu $4,$4,4
bne $6,$0,Loop /* should be "bnel" */
bne $6,$0,L(Loop) /* should be "bnel" */
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 1 */
$LC1: lw $10,0($4)
L(LC1): lw $10,0($4)
mflo $3
mfhi $9
addu $3,$3,$2
@ -85,7 +85,7 @@ $LC1: lw $10,0($4)
addu $2,$9,$2 /* add high product limb and carry from addition */
/* cool down phase 0 */
$LC0: lw $10,0($4)
L(LC0): lw $10,0($4)
mflo $3
mfhi $9
addu $3,$3,$2

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1992,93,94,97,98,99,2000 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1993, 1994, 1997, 1998, 1999, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Brendan Kehoe (brendan@zen.org).
@ -46,10 +47,10 @@ ENTRY(__syscall_error)
/* We translate the system's EWOULDBLOCK error into EAGAIN.
The GNU C library always defines EWOULDBLOCK==EAGAIN.
EWOULDBLOCK_sys is the original number. */
bne v0, EWOULDBLOCK_sys, skip
bne v0, EWOULDBLOCK_sys, L(skip)
nop
li v0, EAGAIN
skip:
L(skip):
#endif
/* Find our per-thread errno address */
jal __errno_location
@ -84,9 +85,9 @@ ENTRY(__syscall_error)
/* We translate the system's EWOULDBLOCK error into EAGAIN.
The GNU C library always defines EWOULDBLOCK==EAGAIN.
EWOULDBLOCK_sys is the original number. */
bne v0, EWOULDBLOCK_sys, skip
bne v0, EWOULDBLOCK_sys, L(skip)
li v0, EAGAIN
skip:
L(skip):
#endif
/* Store it in errno... */
sw v0, errno

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1992,95,97,99,2000 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1995, 1997, 1999, 2000, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Brendan Kehoe (brendan@zen.org).
@ -33,7 +34,7 @@
can make things confusing if you're debugging---it looks like it's jumping
backwards into the previous fn. */
#ifdef __PIC__
#define PSEUDO(name, syscall_name, args) \
#define PSEUDO(name, syscall_name, args) \
.align 2; \
99: la t9,__syscall_error; \
jr t9; \
@ -44,7 +45,7 @@
syscall; \
.set reorder; \
bne a3, zero, 99b; \
syse1:
L(syse1):
#else
#define PSEUDO(name, syscall_name, args) \
.set noreorder; \
@ -57,7 +58,7 @@ syse1:
syscall; \
.set reorder; \
bne a3, zero, 99b; \
syse1:
L(syse1):
#endif
#undef PSEUDO_END
@ -66,11 +67,19 @@ syse1:
#define ret j ra ; nop
#undef END
#define END(sym) .end sym
#define END(function) \
.end function; \
.size function,.-function
#define r0 v0
#define r1 v1
/* The mips move insn is d,s. */
#define MOVE(x,y) move y , x
#if _MIPS_SIM == _MIPS_SIM_ABI32 || _MIPS_SIM == _MIPS_SIM_ABIO64
# define L(label) $L ## label
#else
# define L(label) .L ## label
#endif
#endif

View file

@ -1,4 +1,5 @@
/* Copyright (C) 1992, 1994, 1995, 1997 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1994, 1995, 1997, 2002, 2003
Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Brendan Kehoe (brendan@zen.org).
@ -28,18 +29,18 @@ ENTRY(__wait)
li v0, SYS_wait
syscall
beqz a3, noerror
beqz a3, L(noerror)
nop
j __syscall_error
nop
noerror:
L(noerror):
/* If the arg is not NULL, store v1 there. */
beqz a0, noarg
beqz a0, L(noarg)
nop
sw v1, 0(a0)
nop
noarg:
L(noarg):
ret
.end __wait

View file

@ -49,8 +49,8 @@ NESTED(__clone,4*SZREG,sp)
/* Sanity check arguments. */
li v0,EINVAL
beqz a0,error /* No NULL function pointers. */
beqz a1,error /* No NULL stack pointers. */
beqz a0,L(error) /* No NULL function pointers. */
beqz a1,L(error) /* No NULL stack pointers. */
subu a1,32 /* Reserve argument save space. */
sw a0,0(a1) /* Save function pointer. */
@ -62,15 +62,15 @@ NESTED(__clone,4*SZREG,sp)
li v0,__NR_clone
syscall
bnez a3,error
beqz v0,.Lthread_start
bnez a3,L(error)
beqz v0,L(thread_start)
/* Successful return from the parent */
addiu sp,32
ret
/* Something bad happened -- no child created */
error:
L(error):
addiu sp,32
#ifdef __PIC__
la t9,__syscall_error
@ -84,7 +84,7 @@ error:
its own function so that we can terminate the stack trace with our
debug info. */
.Lthread_start:
L(thread_start):
/* cp is already loaded. */
.cprestore 16
/* The stackframe has been created on entry of clone(). */