]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Tue, 27 Jul 1999 04:43:32 +0000 (04:43 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 27 Jul 1999 04:43:32 +0000 (04:43 +0000)
* sysdeps/sparc/sparc64/add_n.S: Avoid using %g2, %g3, %g7 registers
as much as possible. Declare them using .register pseudo-op if they
are still used.
* sysdeps/sparc/sparc64/lshift.S: Likewise.
* sysdeps/sparc/sparc64/memchr.S: Likewise.
* sysdeps/sparc/sparc64/memcmp.S: Likewise.
* sysdeps/sparc/sparc64/memcpy.S: Likewise.
* sysdeps/sparc/sparc64/memset.S: Likewise.
* sysdeps/sparc/sparc64/rawmemchr.S: Likewise.
* sysdeps/sparc/sparc64/rshift.S: Likewise.
* sysdeps/sparc/sparc64/stpcpy.S: Likewise.
* sysdeps/sparc/sparc64/stpncpy.S: Likewise.
* sysdeps/sparc/sparc64/strcat.S: Likewise.
* sysdeps/sparc/sparc64/strchr.S: Likewise.
* sysdeps/sparc/sparc64/strcmp.S: Likewise.
* sysdeps/sparc/sparc64/strcpy.S: Likewise.
* sysdeps/sparc/sparc64/strcspn.S: Likewise.
* sysdeps/sparc/sparc64/strlen.S: Likewise.
* sysdeps/sparc/sparc64/strncmp.S: Likewise.
* sysdeps/sparc/sparc64/strncpy.S: Likewise.
* sysdeps/sparc/sparc64/strpbrk.S: Likewise.
* sysdeps/sparc/sparc64/strspn.S: Likewise.
* sysdeps/sparc/sparc64/sub_n.S: Likewise.
* sysdeps/sparc/sparc64/dl-machine.h: Likewise.
Optimize trampoline code for .plt4-.plt32767.
Fix trampolines for .plt32768+.

1999-07-25  Jakub Jelinek  <jj@ultra.linux.cz>

23 files changed:
ChangeLog
sysdeps/sparc/sparc64/add_n.S
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/sparc/sparc64/lshift.S
sysdeps/sparc/sparc64/memchr.S
sysdeps/sparc/sparc64/memcmp.S
sysdeps/sparc/sparc64/memcpy.S
sysdeps/sparc/sparc64/memset.S
sysdeps/sparc/sparc64/rawmemchr.S
sysdeps/sparc/sparc64/rshift.S
sysdeps/sparc/sparc64/stpcpy.S
sysdeps/sparc/sparc64/stpncpy.S
sysdeps/sparc/sparc64/strcat.S
sysdeps/sparc/sparc64/strchr.S
sysdeps/sparc/sparc64/strcmp.S
sysdeps/sparc/sparc64/strcpy.S
sysdeps/sparc/sparc64/strcspn.S
sysdeps/sparc/sparc64/strlen.S
sysdeps/sparc/sparc64/strncmp.S
sysdeps/sparc/sparc64/strncpy.S
sysdeps/sparc/sparc64/strpbrk.S
sysdeps/sparc/sparc64/strspn.S
sysdeps/sparc/sparc64/sub_n.S

index 7ce9a2d95ea55b4af6347b93ef6927a930cc4228..23d93066bf231dcad8df4c5bbfcfbb5dfc1a4d1a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,32 @@
+1999-07-25  Jakub Jelinek  <jj@ultra.linux.cz>
+
+       * sysdeps/sparc/sparc64/add_n.S: Avoid using %g2, %g3, %g7 registers
+       as much as possible. Declare them using .register pseudo-op if they
+       are still used.
+       * sysdeps/sparc/sparc64/lshift.S: Likewise.
+       * sysdeps/sparc/sparc64/memchr.S: Likewise.
+       * sysdeps/sparc/sparc64/memcmp.S: Likewise.
+       * sysdeps/sparc/sparc64/memcpy.S: Likewise.
+       * sysdeps/sparc/sparc64/memset.S: Likewise.
+       * sysdeps/sparc/sparc64/rawmemchr.S: Likewise.
+       * sysdeps/sparc/sparc64/rshift.S: Likewise.
+       * sysdeps/sparc/sparc64/stpcpy.S: Likewise.
+       * sysdeps/sparc/sparc64/stpncpy.S: Likewise.
+       * sysdeps/sparc/sparc64/strcat.S: Likewise.
+       * sysdeps/sparc/sparc64/strchr.S: Likewise.
+       * sysdeps/sparc/sparc64/strcmp.S: Likewise.
+       * sysdeps/sparc/sparc64/strcpy.S: Likewise.
+       * sysdeps/sparc/sparc64/strcspn.S: Likewise.
+       * sysdeps/sparc/sparc64/strlen.S: Likewise.
+       * sysdeps/sparc/sparc64/strncmp.S: Likewise.
+       * sysdeps/sparc/sparc64/strncpy.S: Likewise.
+       * sysdeps/sparc/sparc64/strpbrk.S: Likewise.
+       * sysdeps/sparc/sparc64/strspn.S: Likewise.
+       * sysdeps/sparc/sparc64/sub_n.S: Likewise.
+       * sysdeps/sparc/sparc64/dl-machine.h: Likewise.
+       Optimize trampoline code for .plt4-.plt32767.
+       Fix trampolines for .plt32768+.
+
 1999-07-25  Jakub Jelinek  <jj@ultra.linux.cz>
 
        * sysdeps/sparc/sparc32/sparcv8/Makefile: -mv8 is deprecated, use
index 68bb008a7d8a5d925d68e57b49fca3b8869254be..2e88a8c0c0623d0dd76c86f00f7e0ab0353d4ee8 100644 (file)
@@ -1,7 +1,7 @@
 /* SPARC v9 __mpn_add_n -- Add two limb vectors of the same length > 0 and
    store sum in a third limb vector.
   
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
 
    This file is part of the GNU MP Library.
 
 
 ENTRY(__mpn_add_n)
 
-       sub     %g0,%o3,%g3
+       sub     %g0,%o3,%g5
        sllx    %o3,3,%g1
        add     %o1,%g1,%o1             ! make s1_ptr point at end
        add     %o2,%g1,%o2             ! make s2_ptr point at end
        add     %o0,%g1,%o0             ! make res_ptr point at end
        mov     0,%o4                   ! clear carry variable
-       sllx    %g3,3,%o5               ! compute initial address index
+       sllx    %g5,3,%o5               ! compute initial address index
 
 1:     ldx     [%o2+%o5],%g1           ! load s2 limb
-       add     %g3,1,%g3               ! increment loop count
-       ldx     [%o1+%o5],%g2           ! load s1 limb
+       add     %g5,1,%g5               ! increment loop count
+       ldx     [%o1+%o5],%o3           ! load s1 limb
        addcc   %g1,%o4,%g1             ! add s2 limb and carry variable
        movcc   %xcc,0,%o4              ! if carry-out, o4 was 1; clear it
-       addcc   %g1,%g2,%g1             ! add s1 limb to sum
+       addcc   %g1,%o3,%g1             ! add s1 limb to sum
        stx     %g1,[%o0+%o5]           ! store result
        add     %o5,8,%o5               ! increment address index
-       brnz,pt %g3,1b
+       brnz,pt %g5,1b
         movcs  %xcc,1,%o4              ! if s1 add gave carry, record it
 
        retl
index 554321ffe233bc11b24ad0f0f1b3abceab636a13..855e93acb6c4cbc71df739a77b23b9a13f3af1c2 100644 (file)
@@ -64,7 +64,7 @@ elf_machine_load_address (void)
   return pc - *(Elf64_Addr *)(elf_pic_register + la);
 }
 
-/* We have 3 cases to handle.  And we code different code sequences
+/* We have 4 cases to handle.  And we code different code sequences
    for each one.  I love V9 code models...  */
 static inline void
 elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc,
@@ -76,9 +76,14 @@ elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc,
   /* Now move plt_vaddr up to the call instruction.  */
   plt_vaddr += (2 * 4);
 
+  /* PLT entries .PLT32768 and above look always the same.  */
+  if (__builtin_expect (reloc->r_addend, 0) != 0)
+    {
+      *reloc_addr = value - map->l_addr;
+    }
   /* 32-bit Sparc style, the target is in the lower 32-bits of
      address space.  */
-  if ((value >> 32) == 0)
+  else if ((value >> 32) == 0)
     {
       /* sethi %hi(target), %g1
         jmpl   %g1 + %lo(target), %g0  */
@@ -126,26 +131,26 @@ elf_machine_fixup_plt(struct link_map *map, const Elf64_Rela *reloc,
             constant formation code I wrote.  -DaveM  */
 
       /* sethi %hh(value), %g1
-        sethi  %lm(value), %g2
-        or     %g1, %hl(value), %g1
-        or     %g2, %lo(value), %g2
+        sethi  %lm(value), %g5
+        or     %g1, %hm(value), %g1
+        or     %g5, %lo(value), %g5
         sllx   %g1, 32, %g1
-        jmpl   %g1 + %g2, %g0
+        jmpl   %g1 + %g5, %g0
          nop  */
 
-      insns[6] = 0x81c04002;
+      insns[6] = 0x81c04005;
       __asm __volatile ("flush %0 + 24" : : "r" (insns));
 
       insns[5] = 0x83287020;
       __asm __volatile ("flush %0 + 20" : : "r" (insns));
 
-      insns[4] = 0x8410a000 | (low32 & 0x3ff);
+      insns[4] = 0x8a116000 | (low32 & 0x3ff);
       __asm __volatile ("flush %0 + 16" : : "r" (insns));
 
       insns[3] = 0x82106000 | (high32 & 0x3ff);
       __asm __volatile ("flush %0 + 12" : : "r" (insns));
 
-      insns[2] = 0x05000000 | (low32 >> 10);
+      insns[2] = 0x0b000000 | (low32 >> 10);
       __asm __volatile ("flush %0 + 8" : : "r" (insns));
 
       insns[1] = 0x03000000 | (high32 >> 10);
@@ -381,33 +386,44 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
       /* PLT0 looks like:
 
         save   %sp, -192, %sp
-        sethi  %hh(_dl_runtime_{resolve,profile}_0), %g3
-        sethi  %lm(_dl_runtime_{resolve,profile}_0), %g4
-        or     %g3, %hm(_dl_runtime_{resolve,profile}_0), %g3
-        or     %g4, %lo(_dl_runtime_{resolve,profile}_0), %g4
-        sllx   %g3, 32, %g3
-        jmpl   %g3 + %g4, %o0
-         nop
-
-        PLT1 is similar except we jump to _dl_runtime_{resolve,profile}_1.  */
+        sethi  %hh(_dl_runtime_{resolve,profile}_0), %l0
+        sethi  %lm(_dl_runtime_{resolve,profile}_0), %l1
+        or     %l0, %hm(_dl_runtime_{resolve,profile}_0), %l0
+        or     %l1, %lo(_dl_runtime_{resolve,profile}_0), %l1
+        sllx   %l0, 32, %l0
+        jmpl   %l0 + %l1, %l6
+         sethi %hi(0xffc00), %l2
+       */
 
       plt[0] = 0x9de3bf40;
-      plt[1] = 0x07000000 | (res0_addr >> (64 - 22));
-      plt[2] = 0x09000000 | ((res0_addr >> 10) & 0x003fffff);
-      plt[3] = 0x8610e000 | ((res0_addr >> 32) & 0x3ff);
-      plt[4] = 0x88112000 | (res0_addr & 0x3ff);
-      plt[5] = 0x8728f020;
-      plt[6] = 0x91c0c004;
-      plt[7] = 0x01000000;
+      plt[1] = 0x21000000 | (res0_addr >> (64 - 22));
+      plt[2] = 0x23000000 | ((res0_addr >> 10) & 0x003fffff);
+      plt[3] = 0xa0142000 | ((res0_addr >> 32) & 0x3ff);
+      plt[4] = 0xa2146000 | (res0_addr & 0x3ff);
+      plt[5] = 0xa12c3020;
+      plt[6] = 0xadc40011;
+      plt[7] = 0x250003ff;
+
+      /* PLT1 looks like:
+
+        save   %sp, -192, %sp
+        sethi  %hh(_dl_runtime_{resolve,profile}_1), %l0
+        sethi  %lm(_dl_runtime_{resolve,profile}_1), %l1
+        or     %l0, %hm(_dl_runtime_{resolve,profile}_1), %l0
+        or     %l1, %lo(_dl_runtime_{resolve,profile}_1), %l1
+        sllx   %l0, 32, %l0
+        jmpl   %l0 + %l1, %l6
+         srlx  %g1, 12, %o1
+       */
 
       plt[8 + 0] = 0x9de3bf40;
-      plt[8 + 1] = 0x07000000 | (res1_addr >> (64 - 22));
-      plt[8 + 2] = 0x09000000 | ((res1_addr >> 10) & 0x003fffff);
-      plt[8 + 3] = 0x8610e000 | ((res1_addr >> 32) & 0x3ff);
-      plt[8 + 4] = 0x88112000 | (res1_addr & 0x3ff);
-      plt[8 + 5] = 0x8728f020;
-      plt[8 + 6] = 0x91c0c004;
-      plt[8 + 7] = 0x01000000;
+      plt[8 + 1] = 0x21000000 | (res1_addr >> (64 - 22));
+      plt[8 + 2] = 0x23000000 | ((res1_addr >> 10) & 0x003fffff);
+      plt[8 + 3] = 0xa0142000 | ((res1_addr >> 32) & 0x3ff);
+      plt[8 + 4] = 0xa2146000 | (res1_addr & 0x3ff);
+      plt[8 + 5] = 0xa12c3020;
+      plt[8 + 6] = 0xadc40011;
+      plt[8 + 7] = 0x9330700c;
 
       /* Now put the magic cookie at the beginning of .PLT3
         Entry .PLT4 is unused by this implementation.  */
@@ -426,28 +442,27 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
        .type   " #tramp_name "_0, @function
        .align  32
 " #tramp_name "_0:
-       ldx     [%o0 + 32 + 8], %l0
-       sethi   %hi(1048576), %g2
-       sub     %g1, %o0, %o0
-       xor     %g2, -20, %g2
-       sethi   %hi(5120), %g3
-       add     %o0, %g2, %o0
-       sethi   %hi(32768), %o2
-       udivx   %o0, %g3, %g3
-       sllx    %g3, 2, %g1
-       add     %g1, %g3, %g1
-       sllx    %g1, 10, %g2
-       sllx    %g1, 5, %g1
-       sub     %o0, %g2, %o0
-       udivx   %o0, 24, %o0
-       add     %o0, %o2, %o0
-       add     %g1, %o0, %g1
-       sllx    %g1, 1, %o1
-       mov     %l0, %o0
-       add     %o1, %g1, %o1
+       ! sethi   %hi(1047552), %l2 - Done in .PLT0
+       ldx     [%l6 + 32 + 8], %o0
+       sub     %g1, %l6, %l0
+       xor     %l2, -1016, %l2
+       sethi   %hi(5120), %l3
+       add     %l0, %l2, %l0
+       sethi   %hi(32768), %l4
+       udivx   %l0, %l3, %l3
+       sllx    %l3, 2, %l1
+       add     %l1, %l3, %l1
+       sllx    %l1, 10, %l2
+       sllx    %l1, 5, %l1
+       sub     %l0, %l2, %l0
+       udivx   %l0, 24, %l0
+       add     %l0, %l4, %l0
+       add     %l1, %l0, %l1
+       add     %l1, %l1, %l0
+       add     %l0, %l1, %l0
        mov     %i7, %o2
        call    " #fixup_name "
-        sllx   %o1, 3, %o1
+        sllx    %l0, 3, %o1
        jmp     %o0
         restore
        .size   " #tramp_name "_0, . - " #tramp_name "_0
@@ -456,13 +471,12 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
        .type   " #tramp_name "_1, @function
        .align  32
 " #tramp_name "_1:
-       srlx    %g1, 15, %o1
-       ldx     [%o0 + 8], %o0
-       sllx    %o1, 1, %o3
-       add     %o1, %o3, %o1
+       ! srlx  %g1, 12, %o1 - Done in .PLT1
+       ldx     [%l6 + 8], %o0
+       add     %o1, %o1, %o3
        mov     %i7, %o2
        call    " #fixup_name "
-        sllx   %o1, 3, %o1
+        add    %o1, %o3, %o1
        jmp     %o0
         restore
        .size   " #tramp_name "_1, . - " #tramp_name "_1
@@ -513,17 +527,17 @@ _dl_start_user:
    /* Save the user entry point address in %l0.  */
        mov     %o0,%l0
   /* Store the highest stack address.  */
-       sethi   %hi(__libc_stack_end), %g2
-       or      %g2, %lo(__libc_stack_end), %g2
-       ldx     [%l7 + %g2], %l1
+       sethi   %hi(__libc_stack_end), %g5
+       or      %g5, %lo(__libc_stack_end), %g5
+       ldx     [%l7 + %g5], %l1
        add     %sp, 6*8, %l2
        stx     %l2, [%l1]
    /* See if we were run as a command with the executable file name as an
       extra leading argument.  If so, we must shift things around since we
       must keep the stack doubleword aligned.  */
-       sethi   %hi(_dl_skip_args), %g2
-       or      %g2, %lo(_dl_skip_args), %g2
-       ldx     [%l7+%g2], %i0
+       sethi   %hi(_dl_skip_args), %g5
+       or      %g5, %lo(_dl_skip_args), %g5
+       ldx     [%l7+%g5], %i0
        ld      [%i0], %i0
        brz,pt  %i0, 2f
         nop
@@ -555,10 +569,10 @@ _dl_start_user:
        brnz,pt %i3, 13b
         add    %i1, 16, %i1
   /* Load searchlist of the main object to pass to _dl_init_next.  */
-2:     sethi   %hi(_dl_main_searchlist), %g2
-       or      %g2, %lo(_dl_main_searchlist), %g2
-       ldx     [%l7+%g2], %g2
-       ldx     [%g2], %l1
+2:     sethi   %hi(_dl_main_searchlist), %g5
+       or      %g5, %lo(_dl_main_searchlist), %g5
+       ldx     [%l7+%g5], %g5
+       ldx     [%g5], %l1
    /* Call _dl_init_next to return the address of an initializer to run.  */
 3:     call    _dl_init_next
         mov    %l1, %o0
@@ -567,10 +581,10 @@ _dl_start_user:
        jmpl    %o0, %o7
         sub    %o7, 24, %o7
    /* Clear the startup flag.  */
-4:     sethi   %hi(_dl_starting_up), %g2
-       or      %g2, %lo(_dl_starting_up), %g2
-       ldx     [%l7+%g2], %g2
-       st      %g0, [%g2]
+4:     sethi   %hi(_dl_starting_up), %g5
+       or      %g5, %lo(_dl_starting_up), %g5
+       ldx     [%l7+%g5], %g5
+       st      %g0, [%g5]
    /* Pass our finalizer function to the user in %g1.  */
        sethi   %hi(_dl_fini), %g1
        or      %g1, %lo(_dl_fini), %g1
index 4f265ad96b0cb8cd5e766fa79746799743568cb7..81b1dbeb7cdd9f76c99b79a05a85ecf9a5efc58b 100644 (file)
@@ -27,6 +27,9 @@
    size                %o2
    cnt         %o3  */
 
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+
 ENTRY(__mpn_lshift)
        sllx    %o2,3,%g1
        add     %o1,%g1,%o1     ! make %o1 point at end of src
index 87e902277965bcdcb1d664433824ff79f39fb98b..1662f60d88ae206d7cb053093fbf49f374c3b88e 100644 (file)
@@ -35,6 +35,8 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
 #endif
 
        /* Normally, this uses
index bd3253ce5cc50f8d333ebe3d7e65198dac36738d..944751bc6189f30f7fd3ac0fc741d6c196a0fcb9 100644 (file)
@@ -25,6 +25,8 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
 #endif
 
        .text
@@ -114,12 +116,12 @@ ENTRY(memcmp)
 
        ldxa            [%o0] ASI_PNF, %g5              /* Load                         */
        sub             %o1, %o0, %o1                   /* IEU1                         */
-       ldxa            [%o0 + %o1] ASI_PNF, %g7        /* Load         Group           */
+       ldxa            [%o0 + %o1] ASI_PNF, %g4        /* Load         Group           */
        add             %o0, 8, %o0                     /* IEU0                         */
 
-11:    sllx            %g7, %g2, %o4                   /* IEU0         Group           */
-       ldxa            [%o0 + %o1] ASI_PNF, %g7        /* Load                         */
-       srlx            %g7, %g3, %o5                   /* IEU0         Group           */
+11:    sllx            %g4, %g2, %o4                   /* IEU0         Group           */
+       ldxa            [%o0 + %o1] ASI_PNF, %g4        /* Load                         */
+       srlx            %g4, %g3, %o5                   /* IEU0         Group           */
        mov             %g5, %o3                        /* IEU1                         */   
 
        ldxa            [%o0] ASI_PNF, %g5              /* Load                         */
index 180ff23e203223959964d6ef8990028630f76d77..73057ff0a1c4a3ccb1fa515de49ccc8f89643ce5 100644 (file)
@@ -24,6 +24,9 @@
 #include <asm/asi.h>
 #ifndef XCC
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 #define FPRS_FEF       4
 
index c2b23647f55041132aa0f8657997cb260a58778b..9c0f234a6ec2a2631475b79d8b34d9c63d76880f 100644 (file)
@@ -39,7 +39,7 @@
        .align          32
 ENTRY(memset)
        andcc           %o1, 0xff, %o1
-       mov             %o0, %g3
+       mov             %o0, %o5
        be,a,pt         %icc, 50f
 #ifndef USE_BPR
         srl            %o2, 0, %o1
@@ -79,19 +79,19 @@ ENTRY(memset)
        blu,pn          %xcc, 9f
         andcc          %o0, 0x38, %g5
        be,pn           %icc, 6f
-        mov            64, %o5
+        mov            64, %o4
        andcc           %o0, 8, %g0
        be,pn           %icc, 1f
-        sub            %o5, %g5, %o5
+        sub            %o4, %g5, %o4
        stx             %o1, [%o0]
        add             %o0, 8, %o0
-1:     andcc           %o5, 16, %g0
+1:     andcc           %o4, 16, %g0
        be,pn           %icc, 1f
-        sub            %o2, %o5, %o2
+        sub            %o2, %o4, %o2
        stx             %o1, [%o0]
        stx             %o1, [%o0 + 8]
        add             %o0, 16, %o0
-1:     andcc           %o5, 32, %g0
+1:     andcc           %o4, 32, %g0
        be,pn           %icc, 7f
         andncc         %o2, 0x3f, %o3
        stw             %o1, [%o0]
@@ -162,14 +162,14 @@ ENTRY(memset)
 1:     bne,a,pn        %xcc, 8f
         stb            %o1, [%o0]
 8:     retl
-        mov            %g3, %o0
+        mov            %o5, %o0
 17:    brz,pn          %o2, 0f
 8:      add            %o0, 1, %o0
        subcc           %o2, 1, %o2
        bne,pt          %xcc, 8b
         stb            %o1, [%o0 - 1]
 0:     retl
-        mov            %g3, %o0
+        mov            %o5, %o0
 
 6:     stx             %o1, [%o0]
        andncc          %o2, 0x3f, %o3
@@ -195,7 +195,7 @@ ENTRY(__bzero)
 #ifndef USE_BPR
        srl             %o1, 0, %o1
 #endif
-       mov             %o0, %g3
+       mov             %o0, %o5
 50:    cmp             %o1, 7
        bleu,pn         %xcc, 17f
         andcc          %o0, 3, %o2
@@ -220,19 +220,19 @@ ENTRY(__bzero)
 2:     blu,pn          %xcc, 9f
         andcc          %o0, 0x38, %o2
        be,pn           %icc, 6f
-        mov            64, %o5
+        mov            64, %o4
        andcc           %o0, 8, %g0
        be,pn           %icc, 1f
-        sub            %o5, %o2, %o5
+        sub            %o4, %o2, %o4
        stx             %g0, [%o0]
        add             %o0, 8, %o0
-1:     andcc           %o5, 16, %g0
+1:     andcc           %o4, 16, %g0
        be,pn           %icc, 1f
-        sub            %o1, %o5, %o1
+        sub            %o1, %o4, %o1
        stx             %g0, [%o0]
        stx             %g0, [%o0 + 8]
        add             %o0, 16, %o0
-1:     andcc           %o5, 32, %g0
+1:     andcc           %o4, 32, %g0
        be,pn           %icc, 7f
         andncc         %o1, 0x3f, %o3
        stx             %g0, [%o0]
@@ -299,7 +299,7 @@ ENTRY(__bzero)
 1:     bne,a,pn        %xcc, 8f
         stb            %g0, [%o0]
 8:     retl
-        mov            %g3, %o0
+        mov            %o5, %o0
 17:    be,pn           %xcc, 13b
         orcc           %o1, 0, %g0
        be,pn           %xcc, 0f
@@ -308,7 +308,7 @@ ENTRY(__bzero)
        bne,pt          %xcc, 8b
         stb            %g0, [%o0 - 1]
 0:     retl
-        mov            %g3, %o0
+        mov            %o5, %o0
 END(__bzero)
 
 weak_alias(__bzero, bzero)
index 8f48ed940a87a23accb55ed65adc9b0d6a89bf09..bd80c8805386e3f9e7ca6f5b6a10ea8533109f27 100644 (file)
@@ -33,6 +33,8 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
 #endif
 
        /* Normally, this uses
@@ -81,9 +83,9 @@ ENTRY(__rawmemchr)
 
        sub             %o3, %g1, %o2                   /* IEU0         Group           */
 #ifdef EIGHTBIT_NOT_RARE
-       andn            %o2, %o3, %g7                   /* IEU0         Group           */
+       andn            %o2, %o3, %o5                   /* IEU0         Group           */
        ldxa            [%o0] ASI_PNF, %o3              /* Load                         */
-       andcc           %g7, %g2, %g0                   /* IEU1         Group           */
+       andcc           %o5, %g2, %g0                   /* IEU1         Group           */
 #else
        ldxa            [%o0] ASI_PNF, %o3              /* Load                         */
        andcc           %o2, %g2, %g0                   /* IEU1         Group           */
index f43d25efe83473661642caf18b180f76e99ec3d4..2394363b6f96ac7259705a80ad7a35c4387147a2 100644 (file)
@@ -27,6 +27,9 @@
    size                %o2
    cnt         %o3  */
 
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+
 ENTRY(__mpn_rshift)
        ldx     [%o1],%g2       ! load first limb
        sub     %g0,%o3,%o5     ! negate shift count
index 1dd48e701afe94d45bdb4613ff584298716b4556..cb92e7bf38eb68cb1ba2078f2f877739ebab8f8b 100644 (file)
 
 #include <sysdep.h>
 #include <asm/asi.h>
+#ifndef XCC
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
+#endif
 
        /* Normally, this uses
           ((xword - 0x0101010101010101) & 0x8080808080808080) test
index ee1a935d3eeeae22054e62e5ef1644e8a87ef71d..92a1e5cbbecd884eec7a3460d4d8ee552ed5dc29 100644 (file)
@@ -27,6 +27,9 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 
        /* Normally, this uses
index 55a64686658334d429ea8f47f0ccb17eece3456e..482a18ff9acc2110c9a122a3ebbdca9127b3f56f 100644 (file)
@@ -25,6 +25,9 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 
        /* Normally, this uses
index b01764091461befdee2f232f96368c9845226417..361e0cefbb565d6aef823f0c4f4bd07a37d6028e 100644 (file)
@@ -25,6 +25,9 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 
        /* Normally, this uses
index 1288688c0cc772202cb5c119185bfecbab464ab5..428eb9ccafeae576eabaa98f2bb7142c9f0dc618 100644 (file)
 
 #include <sysdep.h>
 #include <asm/asi.h>
+#ifndef XCC
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
+#endif
 
        /* Normally, this uses
           ((xword - 0x0101010101010101) & 0x8080808080808080) test
index 773caf5656f7d8544d009b0208863350655b5221..353dde4865974519e6d7f6fc9df096cb9e283e6a 100644 (file)
 
 #include <sysdep.h>
 #include <asm/asi.h>
+#ifndef XCC
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
+#endif
 
        /* Normally, this uses
           ((xword - 0x0101010101010101) & 0x8080808080808080) test
index 51876b0455f18f2321eecbd7d9edf85cd5c635a6..9603c6c9552c92bc7da183943dc4e96850a01df6 100644 (file)
@@ -26,6 +26,7 @@
 #define XCC xcc
 #define STACK_SIZE     128
 #define STACK_OFFSET   128+0x7ff
+       .register       %g2, #scratch
 #else
 #define STACK_SIZE     64
 #define STACK_OFFSET   64
@@ -37,7 +38,7 @@ ENTRY(strcspn)
        sub             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        mov             1, %o4                          /* IEU1                         */
        stx             %o4, [%sp + STACK_OFFSET]       /* Store        Group           */
-       mov             %o0, %g7                        /* IEU0                         */
+       mov             %o0, %g4                        /* IEU0                         */
 
        stx             %g0, [%sp + STACK_OFFSET + 8]   /* Store        Group           */
        add             %sp, STACK_OFFSET, %o5          /* IEU0                         */
@@ -79,74 +80,74 @@ ENTRY(strcspn)
        ldx             [%o0], %o2                      /* Load         Group           */
 4:     srlx            %o2, 59, %o3                    /* IEU0         Group           */
 
-       srlx            %o2, 56, %g3                    /* IEU0         Group           */
+       srlx            %o2, 56, %g5                    /* IEU0         Group           */
 5:     and             %o3, 0x18, %o3                  /* IEU1                         */
-       andcc           %g3, 0x3f, %g3                  /* IEU1         Group           */
+       andcc           %g5, 0x3f, %g5                  /* IEU1         Group           */
        ldx             [%o5 + %o3], %g2                /* Load                         */
 
        srlx            %o2, 51, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 48, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 48, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 13f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 43, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 40, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 40, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 14f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 35, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 32, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 32, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 15f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 27, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 24, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 24, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 16f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 19, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 16, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 16, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 17f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 11, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
        add             %o0, 8, %o0                     /* IEU1                         */
-       srlx            %o2, 8, %g3                     /* IEU0         Group           */
+       srlx            %o2, 8, %g5                     /* IEU0         Group           */
 
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 18f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
 
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
-       mov             %o2, %g3                        /* IEU1                         */
+       sllx            %o4, %g5, %g1                   /* IEU0                         */
+       mov             %o2, %g5                        /* IEU1                         */
        srlx            %o2, 3, %o3                     /* IEU0         Group           */
 
        ldxa            [%o0] ASI_PNF, %o2              /* Load                         */
@@ -154,58 +155,58 @@ ENTRY(strcspn)
        bne,pn          %xcc, 19f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
 
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
+       sllx            %o4, %g5, %g1                   /* IEU0                         */
        srlx            %o2, 59, %o3                    /* IEU0         Group           */
 
        andcc           %g2, %g1, %g2                   /* IEU1         Group           */
        be,pt           %xcc, 5b                        /* CTI                          */
-        srlx           %o2, 56, %g3                    /* IEU0         Group           */
+        srlx           %o2, 56, %g5                    /* IEU0         Group           */
        sub             %o0, 1, %o0                     /* IEU1                         */
 
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
        .align          16
 19:    sub             %o0, 2, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 18:    sub             %o0, 3, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 17:    add             %o0, 4, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 16:    add             %o0, 3, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 15:    add             %o0, 2, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 14:    add             %o0, 1, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 13:    add             %sp, STACK_SIZE+32, %sp         /* IEU1                         */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
        .align          16
 12:    sub             %o0, 1, %o0                     /* IEU0         Group           */
        add             %sp, STACK_SIZE+32, %sp         /* IEU1                         */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 END(strcspn)
index 3facf4074652ddcaf7d6b54d6d06bbbb3351bc0c..aca7a42fdbda490b26099baaf99d9b7990061bd4 100644 (file)
@@ -45,16 +45,16 @@ ENTRY(strlen)
        or              %g1, %lo(0x01010101), %g1       /* IEU0         Group           */
        mov             %o0, %o1                        /* IEU1                         */
 
-       sllx            %g1, 32, %g2                    /* IEU0         Group           */
+       sllx            %g1, 32, %g4                    /* IEU0         Group           */
        andcc           %o0, 7, %g0                     /* IEU1                         */
-       or              %g1, %g2, %g1                   /* IEU0         Group           */
+       or              %g1, %g4, %g1                   /* IEU0         Group           */
        brz,pn          %o3, 13f                        /* CTI+IEU1                     */
 
-        sllx           %g1, 7, %g2                     /* IEU0         Group           */
+        sllx           %g1, 7, %g4                     /* IEU0         Group           */
        bne,a,pn        %icc, 15f                       /* CTI                          */
         add            %o0, 1, %o0                     /* IEU1                         */
                                                        /* %g1 = 0x0101010101010101     *
-                                                        * %g2 = 0x8080808080808080     *
+                                                        * %g4 = 0x8080808080808080     *
                                                         * %o0 = string pointer         *
                                                         * %o1 = start of string        */
 1:     ldx             [%o0], %o3                      /* Load         Group           */
@@ -62,63 +62,63 @@ ENTRY(strlen)
        add             %o0, 8, %o0                     /* IEU1                         */
 2:     sub             %o3, %g1, %o2                   /* IEU0         Group           */
 #ifdef EIGHTBIT_NOT_RARE
-       andn            %o2, %o3, %g7                   /* IEU0         Group           */
+       andn            %o2, %o3, %o5                   /* IEU0         Group           */
        ldxa            [%o0] ASI_PNF, %o3              /* Load                         */
-       andcc           %g7, %g2, %g0                   /* IEU1         Group           */
+       andcc           %o5, %g4, %g0                   /* IEU1         Group           */
 #else
        ldxa            [%o0] ASI_PNF, %o3              /* Load                         */
-       andcc           %o2, %g2, %g0                   /* IEU1         Group           */
+       andcc           %o2, %g4, %g0                   /* IEU1         Group           */
 #endif
 
        be,pt           %xcc, 2b                        /* CTI                          */
         add            %o0, 8, %o0                     /* IEU0                         */
-       addcc           %o2, %g1, %g3                   /* IEU1         Group           */
+       addcc           %o2, %g1, %g5                   /* IEU1         Group           */
 #ifdef EIGHTBIT_NOT_RARE
-       srlx            %g7, 32, %g7                    /* IEU0                         */
+       srlx            %o5, 32, %o5                    /* IEU0                         */
 
-3:     andcc           %g7, %g2, %g0                   /* IEU1         Group           */
+3:     andcc           %o5, %g4, %g0                   /* IEU1         Group           */
 #else
        srlx            %o2, 32, %o2                    /* IEU0                         */
 
-3:     andcc           %o2, %g2, %g0                   /* IEU1         Group           */
+3:     andcc           %o2, %g4, %g0                   /* IEU1         Group           */
 #endif
        be,pn           %xcc, 4f                        /* CTI                          */
-        srlx           %g3, 56, %o2                    /* IEU0                         */
+        srlx           %g5, 56, %o2                    /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
 
        be,pn           %icc, 12f                       /* CTI                          */
-        srlx           %g3, 48, %o2                    /* IEU0                         */
+        srlx           %g5, 48, %o2                    /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 11f                       /* CTI                          */
 
-        srlx           %g3, 40, %o2                    /* IEU0                         */
+        srlx           %g5, 40, %o2                    /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 10f                       /* CTI                          */
-        srlx           %g3, 32, %o2                    /* IEU0                         */
+        srlx           %g5, 32, %o2                    /* IEU0                         */
 
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 9f                        /* CTI                          */
-4:      srlx           %g3, 24, %o2                    /* IEU0                         */
+4:      srlx           %g5, 24, %o2                    /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
 
        be,pn           %icc, 8f                        /* CTI                          */
-        srlx           %g3, 16, %o2                    /* IEU0                         */
+        srlx           %g5, 16, %o2                    /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 7f                        /* CTI                          */
 
-        srlx           %g3, 8, %o2                     /* IEU0                         */
+        srlx           %g5, 8, %o2                     /* IEU0                         */
        andcc           %o2, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 6f                        /* CTI                          */
         sub            %o3, %g1, %o2                   /* IEU0                         */
 
-       andcc           %g3, 0xff, %g0                  /* IEU1         Group           */
+       andcc           %g5, 0xff, %g0                  /* IEU1         Group           */
        be,pn           %icc, 5f                        /* CTI                          */
         ldxa           [%o0] ASI_PNF, %o3              /* Load                         */
-       andcc           %o2, %g2, %g0                   /* IEU1         Group           */
+       andcc           %o2, %g4, %g0                   /* IEU1         Group           */
 
        be,pt           %xcc, 2b                        /* CTI                          */
         add            %o0, 8, %o0                     /* IEU0                         */
-       addcc           %o2, %g1, %g3                   /* IEU1         Group           */
+       addcc           %o2, %g1, %g5                   /* IEU1         Group           */
        ba,pt           %xcc, 3b                        /* CTI                          */
 
         srlx           %o2, 32, %o2                    /* IEU0                         */
index 361748dd269e7616797abe0a84bd843328916891..85149b53519f93ae169c403e86c7af490a552e08 100644 (file)
@@ -27,6 +27,9 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 
        /* Normally, this uses
index 3d850a8db29982fc0efdebd813b83c69630dba46..09a27df119815d681f594a07ac64af0ccf131d2c 100644 (file)
@@ -27,6 +27,9 @@
 #ifndef XCC
 #define XCC xcc
 #define USE_BPR
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+       .register       %g7, #scratch
 #endif
 
        /* Normally, this uses
index c23ae9995d2a6bf5582c42ae05e727ae545d3249..d06f26b54fec7c20af58faa0074559a27cf9b1b1 100644 (file)
@@ -26,6 +26,7 @@
 #define XCC xcc
 #define STACK_SIZE     128
 #define STACK_OFFSET   128+0x7ff
+       .register       %g2, #scratch
 #else
 #define STACK_SIZE     64
 #define STACK_OFFSET   64
@@ -77,74 +78,74 @@ ENTRY(strpbrk)
         ldub           [%o0], %o2                      /* Load                         */
        ldx             [%o0], %o2                      /* Load         Group           */
 4:     srlx            %o2, 59, %o3                    /* IEU0         Group           */
-       srlx            %o2, 56, %g3                    /* IEU0         Group           */
+       srlx            %o2, 56, %g4                    /* IEU0         Group           */
 
 5:     and             %o3, 0x18, %o3                  /* IEU1                         */
-       andcc           %g3, 0x3f, %g3                  /* IEU1         Group           */
+       andcc           %g4, 0x3f, %g4                  /* IEU1         Group           */
        ldx             [%o5 + %o3], %g2                /* Load                         */
        srlx            %o2, 51, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 48, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
+       srlx            %o2, 48, %g4                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 13f                       /* CTI                          */
 
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
        srlx            %o2, 43, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 40, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
+       srlx            %o2, 40, %g4                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 14f                       /* CTI                          */
 
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
        srlx            %o2, 35, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 32, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
+       srlx            %o2, 32, %g4                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 15f                       /* CTI                          */
 
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
        srlx            %o2, 27, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 24, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
+       srlx            %o2, 24, %g4                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 16f                       /* CTI                          */
 
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
        srlx            %o2, 19, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 16, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
+       srlx            %o2, 16, %g4                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        bne,pn          %xcc, 17f                       /* CTI                          */
 
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
        srlx            %o2, 11, %o3                    /* IEU0                         */
 
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
+       sllx            %o4, %g4, %g1                   /* IEU0         Group           */
        add             %o0, 8, %o0                     /* IEU1                         */
-       srlx            %o2, 8, %g3                     /* IEU0         Group           */
+       srlx            %o2, 8, %g4                     /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        bne,pn          %xcc, 18f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g4, 0x3f, %g4                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
+       sllx            %o4, %g4, %g1                   /* IEU0                         */
        mov             %o2, %g5                        /* IEU1                         */
        srlx            %o2, 3, %o3                     /* IEU0         Group           */
        ldxa            [%o0] ASI_PNF, %o2              /* Load                         */
@@ -152,15 +153,15 @@ ENTRY(strpbrk)
        andcc           %g2, %g1, %g2                   /* IEU1         Group           */
        bne,pn          %xcc, 19f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g5, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g4                  /* IEU1                         */
 
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
+       sllx            %o4, %g4, %g1                   /* IEU0                         */
        srlx            %o2, 59, %o3                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1         Group           */
 
        be,pt           %xcc, 5b                        /* CTI                          */
-        srlx           %o2, 56, %g3                    /* IEU0         Group           */
+        srlx           %o2, 56, %g4                    /* IEU0         Group           */
        sub             %o0, 1, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
 
index de440c0755f73a1f2f354ac4d17a503abe9488c6..69e82d17b7c9096f4068557dcdafe90991bc4377 100644 (file)
@@ -26,6 +26,7 @@
 #define XCC xcc
 #define STACK_SIZE     128
 #define STACK_OFFSET   128+0x7ff
+       .register       %g2, #scratch
 #else
 #define STACK_SIZE     64
 #define STACK_OFFSET   64
@@ -37,7 +38,7 @@ ENTRY(strspn)
        sub             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        mov             1, %o4                          /* IEU1                         */
        stx             %g0, [%sp + STACK_OFFSET]       /* Store        Group           */
-       mov             %o0, %g7                        /* IEU0                         */
+       mov             %o0, %g4                        /* IEU0                         */
 
        stx             %g0, [%sp + STACK_OFFSET + 8]   /* Store        Group           */
        add             %sp, STACK_OFFSET, %o5          /* IEU0                         */
@@ -79,74 +80,74 @@ ENTRY(strspn)
        ldx             [%o0], %o2                      /* Load         Group           */
 4:     srlx            %o2, 59, %o3                    /* IEU0         Group           */
 
-       srlx            %o2, 56, %g3                    /* IEU0         Group           */
+       srlx            %o2, 56, %g5                    /* IEU0         Group           */
 5:     and             %o3, 0x18, %o3                  /* IEU1                         */
-       andcc           %g3, 0x3f, %g3                  /* IEU1         Group           */
+       andcc           %g5, 0x3f, %g5                  /* IEU1         Group           */
        ldx             [%o5 + %o3], %g2                /* Load                         */
 
        srlx            %o2, 51, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 48, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 48, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        be,pn           %xcc, 13f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 43, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 40, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 40, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        be,pn           %xcc, 14f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 35, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 32, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 32, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        be,pn           %xcc, 15f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 27, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 24, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 24, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        be,pn           %xcc, 16f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 19, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
-       srlx            %o2, 16, %g3                    /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
+       srlx            %o2, 16, %g5                    /* IEU0         Group           */
        andcc           %g2, %g1, %g2                   /* IEU1                         */
 
        be,pn           %xcc, 17f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
 
        srlx            %o2, 11, %o3                    /* IEU0                         */
-       sllx            %o4, %g3, %g1                   /* IEU0         Group           */
+       sllx            %o4, %g5, %g1                   /* IEU0         Group           */
        add             %o0, 8, %o0                     /* IEU1                         */
-       srlx            %o2, 8, %g3                     /* IEU0         Group           */
+       srlx            %o2, 8, %g5                     /* IEU0         Group           */
 
        andcc           %g2, %g1, %g2                   /* IEU1                         */
        be,pn           %xcc, 18f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
 
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
-       mov             %o2, %g3                        /* IEU1                         */
+       sllx            %o4, %g5, %g1                   /* IEU0                         */
+       mov             %o2, %g5                        /* IEU1                         */
        srlx            %o2, 3, %o3                     /* IEU0         Group           */
 
        ldxa            [%o0] ASI_PNF, %o2              /* Load                         */
@@ -154,58 +155,58 @@ ENTRY(strspn)
        be,pn           %xcc, 19f                       /* CTI                          */
         and            %o3, 0x18, %o3                  /* IEU0         Group           */
 
-       and             %g3, 0x3f, %g3                  /* IEU1                         */
+       and             %g5, 0x3f, %g5                  /* IEU1                         */
        ldx             [%o5 + %o3], %g2                /* Load         Group           */
-       sllx            %o4, %g3, %g1                   /* IEU0                         */
+       sllx            %o4, %g5, %g1                   /* IEU0                         */
        srlx            %o2, 59, %o3                    /* IEU0         Group           */
 
        andcc           %g2, %g1, %g2                   /* IEU1         Group           */
        bne,pt          %xcc, 5b                        /* CTI                          */
-        srlx           %o2, 56, %g3                    /* IEU0         Group           */
+        srlx           %o2, 56, %g5                    /* IEU0         Group           */
        sub             %o0, 1, %o0                     /* IEU1                         */
 
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
        .align          16
 19:    sub             %o0, 2, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 18:    sub             %o0, 3, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 17:    add             %o0, 4, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 16:    add             %o0, 3, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 15:    add             %o0, 2, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 14:    add             %o0, 1, %o0                     /* IEU1                         */
        add             %sp, STACK_SIZE+32, %sp         /* IEU0         Group           */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
 13:    add             %sp, STACK_SIZE+32, %sp         /* IEU1                         */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 
        .align          16
 12:    sub             %o0, 1, %o0                     /* IEU0         Group           */
        add             %sp, STACK_SIZE+32, %sp         /* IEU1                         */
        retl                                            /* CTI+IEU1     Group           */
-        sub            %o0, %g7, %o0                   /* IEU0                         */
+        sub            %o0, %g4, %o0                   /* IEU0                         */
 END(strspn)
index 403d50c704b0786dcbaa2e703b6563155a134130..b0d6b75bfe39eb6880a24777573faffa76c43ed9 100644 (file)
@@ -1,7 +1,7 @@
 /* SPARC v9 __mpn_sub_n -- Subtract two limb vectors of the same length > 0
    and store difference in a third limb vector.
 
-   Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
 
    This file is part of the GNU MP Library.
 
 
 ENTRY(__mpn_sub_n)
 
-       sub %g0,%o3,%g3
+       sub %g0,%o3,%g5
        sllx %o3,3,%g1
        add %o1,%g1,%o1                 ! make s1_ptr point at end
        add %o2,%g1,%o2                 ! make s2_ptr point at end
        add %o0,%g1,%o0                 ! make res_ptr point at end
        mov 0,%o4                       ! clear carry variable
-       sllx %g3,3,%o5                  ! compute initial address index
+       sllx %g5,3,%o5                  ! compute initial address index
 
 1:     ldx [%o2+%o5],%g1               ! load s2 limb
-       add %g3,1,%g3                   ! increment loop count
-       ldx [%o1+%o5],%g2               ! load s1 limb
+       add %g5,1,%g5                   ! increment loop count
+       ldx [%o1+%o5],%o3               ! load s1 limb
        addcc %g1,%o4,%g1               ! add s2 limb and carry variable
        movcc %xcc,0,%o4                ! if carry-out, o4 was 1; clear it
-       subcc %g2,%g1,%g1               ! subtract s1 limb from sum
+       subcc %o3,%g1,%g1               ! subtract s1 limb from sum
        stx %g1,[%o0+%o5]               ! store result
        add %o5,8,%o5                   ! increment address index
-       brnz,pt %g3,1b
+       brnz,pt %g5,1b
         movcs %xcc,1,%o4               ! if s1 subtract gave carry, record it
 
        retl