This is the mail archive of the newlib@sources.redhat.com mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

patch: machine/i386 changes, 2nd version


This patch combines and updates my Tuesday and Thursday patches for the
files in libc/machine/i386. I've changed the names of the global
configuration macros by prefixing them with _I386MACH_.

I've also figured out what __REGISTER_PREFIX__ does and removed my
stupid re-addition of it to setjump.S.

- Werner

---------------------------------- ChangeLog ----------------------------------

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

------------------------------------ patch ------------------------------------

--- orig/newlib/libc/machine/i386/i386mach.h	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/i386mach.h	Sun Aug 27 19:17:49 2000
@@ -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
--- orig/newlib/libc/machine/i386/f_atan2.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_atan2.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_atan2)
+	SOTYPE_FUNCTION(_f_atan2)
 
 SYM (_f_atan2):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_atan2f.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_atan2f.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_atan2f)
+	SOTYPE_FUNCTION(_f_atan2f)
 
 SYM (_f_atan2f):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_frexp.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_frexp.S	Thu Aug 24 20:53:55 2000
@@ -21,6 +21,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_frexp)
+	SOTYPE_FUNCTION(_f_frexp)
 
 SYM (_f_frexp):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_frexpf.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_frexpf.S	Thu Aug 24 20:53:55 2000
@@ -21,6 +21,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_frexpf)
+	SOTYPE_FUNCTION(_f_frexpf)
 
 SYM (_f_frexpf):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_ldexp.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_ldexp.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_ldexp)
+	SOTYPE_FUNCTION(_f_ldexp)
 
 SYM (_f_ldexp):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_ldexpf.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_ldexpf.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_ldexpf)
+	SOTYPE_FUNCTION(_f_ldexpf)
 
 SYM (_f_ldexpf):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_log.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_log.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_log)
+	SOTYPE_FUNCTION(_f_log)
 
 SYM (_f_log):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_log10.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_log10.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_log10)
+	SOTYPE_FUNCTION(_f_log10)
 
 SYM (_f_log10):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_log10f.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_log10f.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_log10f)
+	SOTYPE_FUNCTION(_f_log10f)
 
 SYM (_f_log10f):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_logf.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_logf.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_logf)
+	SOTYPE_FUNCTION(_f_logf)
 
 SYM (_f_logf):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_tan.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_tan.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_tan)
+	SOTYPE_FUNCTION(_f_tan)
 
 SYM (_f_tan):
 	pushl ebp
--- orig/newlib/libc/machine/i386/f_tanf.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/f_tanf.S	Thu Aug 24 20:53:55 2000
@@ -20,6 +20,7 @@
 	#include "i386mach.h"
 
 	.global SYM (_f_tanf)
+	SOTYPE_FUNCTION(_f_tanf)
 
 SYM (_f_tanf):
 	pushl ebp
--- orig/newlib/libc/machine/i386/memchr.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/memchr.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 	
 	.global	SYM (memchr)
+	SOTYPE_FUNCTION(memchr)
 
 SYM (memchr):
 	pushl	ebp
--- orig/newlib/libc/machine/i386/memcmp.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/memcmp.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 
 	.global SYM (memcmp)
+	SOTYPE_FUNCTION(memcmp)
 
 SYM (memcmp):
 
--- orig/newlib/libc/machine/i386/memcpy.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/memcpy.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 	
 	.global SYM (memcpy)
+	SOTYPE_FUNCTION(memcpy)
 
 SYM (memcpy):
 
--- orig/newlib/libc/machine/i386/memmove.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/memmove.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 	
 	.global SYM (memmove)
+	SOTYPE_FUNCTION(memmove)
 
 SYM (memmove):
 
--- orig/newlib/libc/machine/i386/memset.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/memset.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 
 	.global SYM (memset)
+	SOTYPE_FUNCTION(memset)
 
 SYM (memset):
 
--- orig/newlib/libc/machine/i386/setjmp.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/setjmp.S	Sun Aug 27 19:33:03 2000
@@ -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 @@
 
 	movl	24(edi),ebp
 
-	cli
+	__CLI
 	movl	28(edi),esp
 	
 	pushl	32(edi)	
@@ -131,6 +83,6 @@
 	movl	12(edi),edx
 	movl	16(edi),esi
 	movl	20(edi),edi
-	sti
+	__STI
 
 	ret
--- orig/newlib/libc/machine/i386/strchr.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/strchr.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 	
 	.global SYM (strchr)
+	SOTYPE_FUNCTION(strchr)
 
 SYM (strchr):
 
--- orig/newlib/libc/machine/i386/strlen.S	Thu Feb 17 20:39:46 2000
+++ src/newlib/libc/machine/i386/strlen.S	Thu Aug 24 20:53:55 2000
@@ -11,6 +11,7 @@
 	#include "i386mach.h"
 
 	.global SYM (strlen)
+	SOTYPE_FUNCTION(strlen)
 
 SYM (strlen):
 
-- 
  _________________________________________________________________________
 / Werner Almesberger, ICA, EPFL, CH       werner.almesberger@ica.epfl.ch /
/_IN_N_032__Tel_+41_21_693_6621__Fax_+41_21_693_6610_____________________/

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]