From ef44da427fe0883e1b4fd60cacbcc94b574f5911 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Mon, 28 Aug 2000 17:50:06 +0000 Subject: 2000-08-27 Werner Almesberger * 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. --- newlib/ChangeLog | 22 ++++++++++++++ newlib/libc/machine/i386/f_atan2.S | 1 + newlib/libc/machine/i386/f_atan2f.S | 1 + newlib/libc/machine/i386/f_frexp.S | 1 + newlib/libc/machine/i386/f_frexpf.S | 1 + newlib/libc/machine/i386/f_ldexp.S | 1 + newlib/libc/machine/i386/f_ldexpf.S | 1 + newlib/libc/machine/i386/f_log.S | 1 + newlib/libc/machine/i386/f_log10.S | 1 + newlib/libc/machine/i386/f_log10f.S | 1 + newlib/libc/machine/i386/f_logf.S | 1 + newlib/libc/machine/i386/f_tan.S | 1 + newlib/libc/machine/i386/f_tanf.S | 1 + newlib/libc/machine/i386/i386mach.h | 14 +++++++++ newlib/libc/machine/i386/memchr.S | 1 + newlib/libc/machine/i386/memcmp.S | 1 + newlib/libc/machine/i386/memcpy.S | 1 + newlib/libc/machine/i386/memmove.S | 1 + newlib/libc/machine/i386/memset.S | 1 + newlib/libc/machine/i386/setjmp.S | 60 ++++--------------------------------- newlib/libc/machine/i386/strchr.S | 1 + newlib/libc/machine/i386/strlen.S | 1 + 22 files changed, 61 insertions(+), 54 deletions(-) (limited to 'newlib') diff --git a/newlib/ChangeLog b/newlib/ChangeLog index bccd51def..68283e31c 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,25 @@ +2000-08-27 Werner Almesberger + + * 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 * 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 c6f3a7acd..51ac98140 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 d56a16709..092fec4d6 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 8724f524a..58397b79c 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 05f0555d6..13d5a82be 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 8a877193f..af6b05825 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 e2bf387b0..cded4cd95 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 8d5ea7299..e0eb7e0b1 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 95ab45bf3..eed997f16 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 cdf321ecc..5f781e309 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 cff3b359f..3620c05c4 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 5221d5e1b..ae0431f4a 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 e8251e03c..23ba7376a 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 bd6cf22f0..23c32190d 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 40e29af4f..e950a24f1 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 23419ddb8..a8589c095 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 c0fd8f27e..488290fdc 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 a89a296f7..04eaf1479 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 12e33e443..9ba227217 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 0f4b537b9..89217627e 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 f224f380c..736f307cd 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 cae390ace..10d393aa4 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): -- cgit v1.2.3