OSDN Git Service

2000-08-27 Werner Almesberger <Werner.Almesberger@epfl.ch>
authorjjohnstn <jjohnstn>
Mon, 28 Aug 2000 17:50:06 +0000 (17:50 +0000)
committerjjohnstn <jjohnstn>
Mon, 28 Aug 2000 17:50:06 +0000 (17:50 +0000)
        * libc/machine/i386/i386mach.h: added SOTYPE_FUNCTION to set type
        of global entry points if _I386MACH_NEED_SOTYPE_FUNCTION is defined;
        Added __CLI and __STI macros (controlled via
        _I386MACH_ALLOW_HW_INTERRUPTS macro).
        * libc/machine/i386/f_atan2.S libc/machine/i386/f_atan2f.S
        libc/machine/i386/f_frexp.S libc/machine/i386/f_frexpf.S
        libc/machine/i386/f_ldexp.S libc/machine/i386/f_ldexpf.S
        libc/machine/i386/f_log.S libc/machine/i386/f_log10.S
        libc/machine/i386/f_log10f.S libc/machine/i386/f_logf.S
        libc/machine/i386/f_tan.S libc/machine/i386/f_tanf.S
        libc/machine/i386/memchr.S libc/machine/i386/memcmp.S
        libc/machine/i386/memcpy.S libc/machine/i386/memmove.S
        libc/machine/i386/memset.S libc/machine/i386/setjmp.S
        libc/machine/i386/strchr.S libc/machine/i386/strlen.S:
        (that's libc/machine/i386/*.S) added SOTYPE_FUNCTION(symbol)
        for all global entry points.
        * libc/machine/i386/setjmp.S: removed code replicated in
        libc/machine/i386/i386mach.h and included i386mach.h instead;
        Use __CLI and __STI instead of cli and sti.

22 files changed:
newlib/ChangeLog
newlib/libc/machine/i386/f_atan2.S
newlib/libc/machine/i386/f_atan2f.S
newlib/libc/machine/i386/f_frexp.S
newlib/libc/machine/i386/f_frexpf.S
newlib/libc/machine/i386/f_ldexp.S
newlib/libc/machine/i386/f_ldexpf.S
newlib/libc/machine/i386/f_log.S
newlib/libc/machine/i386/f_log10.S
newlib/libc/machine/i386/f_log10f.S
newlib/libc/machine/i386/f_logf.S
newlib/libc/machine/i386/f_tan.S
newlib/libc/machine/i386/f_tanf.S
newlib/libc/machine/i386/i386mach.h
newlib/libc/machine/i386/memchr.S
newlib/libc/machine/i386/memcmp.S
newlib/libc/machine/i386/memcpy.S
newlib/libc/machine/i386/memmove.S
newlib/libc/machine/i386/memset.S
newlib/libc/machine/i386/setjmp.S
newlib/libc/machine/i386/strchr.S
newlib/libc/machine/i386/strlen.S

index bccd51d..68283e3 100644 (file)
@@ -1,3 +1,25 @@
+2000-08-27  Werner Almesberger  <Werner.Almesberger@epfl.ch>
+
+        * libc/machine/i386/i386mach.h: added SOTYPE_FUNCTION to set type
+        of global entry points if _I386MACH_NEED_SOTYPE_FUNCTION is defined;
+        Added __CLI and __STI macros (controlled via
+        _I386MACH_ALLOW_HW_INTERRUPTS macro).
+        * libc/machine/i386/f_atan2.S libc/machine/i386/f_atan2f.S
+        libc/machine/i386/f_frexp.S libc/machine/i386/f_frexpf.S
+        libc/machine/i386/f_ldexp.S libc/machine/i386/f_ldexpf.S
+        libc/machine/i386/f_log.S libc/machine/i386/f_log10.S
+        libc/machine/i386/f_log10f.S libc/machine/i386/f_logf.S
+        libc/machine/i386/f_tan.S libc/machine/i386/f_tanf.S
+        libc/machine/i386/memchr.S libc/machine/i386/memcmp.S
+        libc/machine/i386/memcpy.S libc/machine/i386/memmove.S
+        libc/machine/i386/memset.S libc/machine/i386/setjmp.S
+        libc/machine/i386/strchr.S libc/machine/i386/strlen.S:
+        (that's libc/machine/i386/*.S) added SOTYPE_FUNCTION(symbol)
+        for all global entry points.
+        * libc/machine/i386/setjmp.S: removed code replicated in
+        libc/machine/i386/i386mach.h and included i386mach.h instead;
+        Use __CLI and __STI instead of cli and sti.
+
 2000-08-25  DJ Delorie  <dj@redhat.com>
 
        * libc/include/sys/unistd.h (environ): this one isn't from the
index c6f3a7a..51ac981 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_atan2)
+       SOTYPE_FUNCTION(_f_atan2)
 
 SYM (_f_atan2):
        pushl ebp
index d56a167..092fec4 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_atan2f)
+       SOTYPE_FUNCTION(_f_atan2f)
 
 SYM (_f_atan2f):
        pushl ebp
index 8724f52..58397b7 100644 (file)
@@ -21,6 +21,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_frexp)
+       SOTYPE_FUNCTION(_f_frexp)
 
 SYM (_f_frexp):
        pushl ebp
index 05f0555..13d5a82 100644 (file)
@@ -21,6 +21,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_frexpf)
+       SOTYPE_FUNCTION(_f_frexpf)
 
 SYM (_f_frexpf):
        pushl ebp
index 8a87719..af6b058 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_ldexp)
+       SOTYPE_FUNCTION(_f_ldexp)
 
 SYM (_f_ldexp):
        pushl ebp
index e2bf387..cded4cd 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_ldexpf)
+       SOTYPE_FUNCTION(_f_ldexpf)
 
 SYM (_f_ldexpf):
        pushl ebp
index 8d5ea72..e0eb7e0 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_log)
+       SOTYPE_FUNCTION(_f_log)
 
 SYM (_f_log):
        pushl ebp
index 95ab45b..eed997f 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_log10)
+       SOTYPE_FUNCTION(_f_log10)
 
 SYM (_f_log10):
        pushl ebp
index cdf321e..5f781e3 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_log10f)
+       SOTYPE_FUNCTION(_f_log10f)
 
 SYM (_f_log10f):
        pushl ebp
index cff3b35..3620c05 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_logf)
+       SOTYPE_FUNCTION(_f_logf)
 
 SYM (_f_logf):
        pushl ebp
index 5221d5e..ae0431f 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_tan)
+       SOTYPE_FUNCTION(_f_tan)
 
 SYM (_f_tan):
        pushl ebp
index e8251e0..23ba737 100644 (file)
@@ -20,6 +20,7 @@ There is no error checking or setting of errno.
        #include "i386mach.h"
 
        .global SYM (_f_tanf)
+       SOTYPE_FUNCTION(_f_tanf)
 
 SYM (_f_tanf):
        pushl ebp
index bd6cf22..23c3219 100644 (file)
 #define mm5 REG(mm5)
 #define mm6 REG(mm6)
 #define mm7 REG(mm7)
+
+#ifdef _I386MACH_NEED_SOTYPE_FUNCTION
+#define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
+#else
+#define SOTYPE_FUNCTION(sym)
+#endif
+
+#ifdef _I386MACH_ALLOW_HW_INTERRUPTS
+#define        __CLI
+#define        __STI
+#else
+#define __CLI  cli
+#define __STI  sti
+#endif
index 40e29af..e950a24 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
        
        .global SYM (memchr)
+       SOTYPE_FUNCTION(memchr)
 
 SYM (memchr):
        pushl   ebp
index 23419dd..a8589c0 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
 
        .global SYM (memcmp)
+       SOTYPE_FUNCTION(memcmp)
 
 SYM (memcmp):
 
index c0fd8f2..488290f 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
        
        .global SYM (memcpy)
+       SOTYPE_FUNCTION(memcpy)
 
 SYM (memcpy):
 
index a89a296..04eaf14 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
        
        .global SYM (memmove)
+       SOTYPE_FUNCTION(memmove)
 
 SYM (memmove):
 
index 12e33e4..9ba2272 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
 
        .global SYM (memset)
+       SOTYPE_FUNCTION(memset)
 
 SYM (memset):
 
index 0f4b537..8921762 100644 (file)
@@ -3,6 +3,7 @@
  *  This file was modified to use the __USER_LABEL_PREFIX__ and
  *  __REGISTER_PREFIX__ macros defined by later versions of GNU cpp by
  *  Joel Sherrill (joel@OARcorp.com)
+ *  Slight change: now includes i386mach.h for this (Werner Almesberger)
  *
  ** Copyright (C) 1991 DJ Delorie, 24 Kirsten Ave, Rochester NH 03867-2954
  **
  **     0   4   8   12  16  20  24  28  32
  */
 
-/* These are predefined by new versions of GNU cpp.  */
-#ifndef __USER_LABEL_PREFIX__
-#define __USER_LABEL_PREFIX__ _
-#endif
-/***************************** TEMPORARY ******************************
- * 
- *  It appears that the i386-coff configuration of gcc 2.6.2 does not
- *  do the __REGISTER_PREFIX__ correctly.  Fix this when it does.
- **********************************************************************/
-#define __REGISTER_PREFIX__ %
-#ifndef __REGISTER_PREFIX__
-#define __REGISTER_PREFIX__ 
-#endif
-/* ANSI concatenation macros.  */
-#define CONCAT1(a, b) CONCAT2(a, b)
-#define CONCAT2(a, b) a ## b
-/* Use the right prefix for global labels.  */
-#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
-/* Use the right prefix for registers.  */
-#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
-#define eax REG (eax)
-#define ebx REG (ebx)
-#define ecx REG (ecx)
-#define edx REG (edx)
-#define esi REG (esi)
-#define edi REG (edi)
-#define ebp REG (ebp)
-#define esp REG (esp)
-#define ax REG (ax)
-#define bx REG (bx)
-#define cx REG (cx)
-#define dx REG (dx)
-
-#define ah REG (ah)
-#define bh REG (bh)
-#define ch REG (ch)
-#define dh REG (dh)
-
-#define al REG (al)
-#define bl REG (bl)
-#define cl REG (cl)
-#define dl REG (dl)
+       #include "i386mach.h"
 
         .global SYM (setjmp)
         .global SYM (longjmp)
+       SOTYPE_FUNCTION(setjmp)
+       SOTYPE_FUNCTION(longjmp)
  
 SYM (setjmp):
 
@@ -120,7 +72,7 @@ SYM (longjmp):
 
        movl    24(edi),ebp
 
-       cli
+       __CLI
        movl    28(edi),esp
        
        pushl   32(edi) 
@@ -131,6 +83,6 @@ SYM (longjmp):
        movl    12(edi),edx
        movl    16(edi),esi
        movl    20(edi),edi
-       sti
+       __STI
 
        ret
index f224f38..736f307 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
        
        .global SYM (strchr)
+       SOTYPE_FUNCTION(strchr)
 
 SYM (strchr):
 
index cae390a..10d393a 100644 (file)
@@ -11,6 +11,7 @@
        #include "i386mach.h"
 
        .global SYM (strlen)
+       SOTYPE_FUNCTION(strlen)
 
 SYM (strlen):