diff options
-rw-r--r-- | newlib/ChangeLog | 22 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_atan2.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_atan2f.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_frexp.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_frexpf.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_ldexp.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_ldexpf.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_log.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_log10.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_log10f.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_logf.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_tan.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/f_tanf.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/i386mach.h | 14 | ||||
-rw-r--r-- | newlib/libc/machine/i386/memchr.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/memcmp.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/memcpy.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/memmove.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/memset.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/setjmp.S | 60 | ||||
-rw-r--r-- | newlib/libc/machine/i386/strchr.S | 1 | ||||
-rw-r--r-- | newlib/libc/machine/i386/strlen.S | 1 |
22 files changed, 61 insertions, 54 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index bccd51d..68283e3 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -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 diff --git a/newlib/libc/machine/i386/f_atan2.S b/newlib/libc/machine/i386/f_atan2.S index c6f3a7a..51ac981 100644 --- a/newlib/libc/machine/i386/f_atan2.S +++ b/newlib/libc/machine/i386/f_atan2.S @@ -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 diff --git a/newlib/libc/machine/i386/f_atan2f.S b/newlib/libc/machine/i386/f_atan2f.S index d56a167..092fec4 100644 --- a/newlib/libc/machine/i386/f_atan2f.S +++ b/newlib/libc/machine/i386/f_atan2f.S @@ -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 diff --git a/newlib/libc/machine/i386/f_frexp.S b/newlib/libc/machine/i386/f_frexp.S index 8724f52..58397b7 100644 --- a/newlib/libc/machine/i386/f_frexp.S +++ b/newlib/libc/machine/i386/f_frexp.S @@ -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 diff --git a/newlib/libc/machine/i386/f_frexpf.S b/newlib/libc/machine/i386/f_frexpf.S index 05f0555..13d5a82 100644 --- a/newlib/libc/machine/i386/f_frexpf.S +++ b/newlib/libc/machine/i386/f_frexpf.S @@ -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 diff --git a/newlib/libc/machine/i386/f_ldexp.S b/newlib/libc/machine/i386/f_ldexp.S index 8a87719..af6b058 100644 --- a/newlib/libc/machine/i386/f_ldexp.S +++ b/newlib/libc/machine/i386/f_ldexp.S @@ -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 diff --git a/newlib/libc/machine/i386/f_ldexpf.S b/newlib/libc/machine/i386/f_ldexpf.S index e2bf387..cded4cd 100644 --- a/newlib/libc/machine/i386/f_ldexpf.S +++ b/newlib/libc/machine/i386/f_ldexpf.S @@ -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 diff --git a/newlib/libc/machine/i386/f_log.S b/newlib/libc/machine/i386/f_log.S index 8d5ea72..e0eb7e0 100644 --- a/newlib/libc/machine/i386/f_log.S +++ b/newlib/libc/machine/i386/f_log.S @@ -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 diff --git a/newlib/libc/machine/i386/f_log10.S b/newlib/libc/machine/i386/f_log10.S index 95ab45b..eed997f 100644 --- a/newlib/libc/machine/i386/f_log10.S +++ b/newlib/libc/machine/i386/f_log10.S @@ -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 diff --git a/newlib/libc/machine/i386/f_log10f.S b/newlib/libc/machine/i386/f_log10f.S index cdf321e..5f781e3 100644 --- a/newlib/libc/machine/i386/f_log10f.S +++ b/newlib/libc/machine/i386/f_log10f.S @@ -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 diff --git a/newlib/libc/machine/i386/f_logf.S b/newlib/libc/machine/i386/f_logf.S index cff3b35..3620c05 100644 --- a/newlib/libc/machine/i386/f_logf.S +++ b/newlib/libc/machine/i386/f_logf.S @@ -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 diff --git a/newlib/libc/machine/i386/f_tan.S b/newlib/libc/machine/i386/f_tan.S index 5221d5e..ae0431f 100644 --- a/newlib/libc/machine/i386/f_tan.S +++ b/newlib/libc/machine/i386/f_tan.S @@ -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 diff --git a/newlib/libc/machine/i386/f_tanf.S b/newlib/libc/machine/i386/f_tanf.S index e8251e0..23ba737 100644 --- a/newlib/libc/machine/i386/f_tanf.S +++ b/newlib/libc/machine/i386/f_tanf.S @@ -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 diff --git a/newlib/libc/machine/i386/i386mach.h b/newlib/libc/machine/i386/i386mach.h index bd6cf22..23c3219 100644 --- a/newlib/libc/machine/i386/i386mach.h +++ b/newlib/libc/machine/i386/i386mach.h @@ -67,3 +67,17 @@ #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 diff --git a/newlib/libc/machine/i386/memchr.S b/newlib/libc/machine/i386/memchr.S index 40e29af..e950a24 100644 --- a/newlib/libc/machine/i386/memchr.S +++ b/newlib/libc/machine/i386/memchr.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (memchr) + SOTYPE_FUNCTION(memchr) SYM (memchr): pushl ebp diff --git a/newlib/libc/machine/i386/memcmp.S b/newlib/libc/machine/i386/memcmp.S index 23419dd..a8589c0 100644 --- a/newlib/libc/machine/i386/memcmp.S +++ b/newlib/libc/machine/i386/memcmp.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (memcmp) + SOTYPE_FUNCTION(memcmp) SYM (memcmp): diff --git a/newlib/libc/machine/i386/memcpy.S b/newlib/libc/machine/i386/memcpy.S index c0fd8f2..488290f 100644 --- a/newlib/libc/machine/i386/memcpy.S +++ b/newlib/libc/machine/i386/memcpy.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (memcpy) + SOTYPE_FUNCTION(memcpy) SYM (memcpy): diff --git a/newlib/libc/machine/i386/memmove.S b/newlib/libc/machine/i386/memmove.S index a89a296..04eaf14 100644 --- a/newlib/libc/machine/i386/memmove.S +++ b/newlib/libc/machine/i386/memmove.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (memmove) + SOTYPE_FUNCTION(memmove) SYM (memmove): diff --git a/newlib/libc/machine/i386/memset.S b/newlib/libc/machine/i386/memset.S index 12e33e4..9ba2272 100644 --- a/newlib/libc/machine/i386/memset.S +++ b/newlib/libc/machine/i386/memset.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (memset) + SOTYPE_FUNCTION(memset) SYM (memset): diff --git a/newlib/libc/machine/i386/setjmp.S b/newlib/libc/machine/i386/setjmp.S index 0f4b537..8921762 100644 --- a/newlib/libc/machine/i386/setjmp.S +++ b/newlib/libc/machine/i386/setjmp.S @@ -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 ** @@ -22,61 +23,12 @@ ** 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 diff --git a/newlib/libc/machine/i386/strchr.S b/newlib/libc/machine/i386/strchr.S index f224f38..736f307 100644 --- a/newlib/libc/machine/i386/strchr.S +++ b/newlib/libc/machine/i386/strchr.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (strchr) + SOTYPE_FUNCTION(strchr) SYM (strchr): diff --git a/newlib/libc/machine/i386/strlen.S b/newlib/libc/machine/i386/strlen.S index cae390a..10d393a 100644 --- a/newlib/libc/machine/i386/strlen.S +++ b/newlib/libc/machine/i386/strlen.S @@ -11,6 +11,7 @@ #include "i386mach.h" .global SYM (strlen) + SOTYPE_FUNCTION(strlen) SYM (strlen): |