Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Dec 2014 16:49:34 +0000 (UTC)
From:      Ian Lepore <ian@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r276204 - head/sys/arm/include
Message-ID:  <201412251649.sBPGnYIK004791@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ian
Date: Thu Dec 25 16:49:33 2014
New Revision: 276204
URL: https://svnweb.freebsd.org/changeset/base/276204

Log:
  Create 'L' variants of all the ENTRY macros for file-static/local symbols.
  
  If it seems like this is getting out of hand, I quite agree.  I wonder if
  it's safe, here in the 21st century, to lose the distinction between C and
  ASM symbols?

Modified:
  head/sys/arm/include/asm.h

Modified: head/sys/arm/include/asm.h
==============================================================================
--- head/sys/arm/include/asm.h	Thu Dec 25 16:43:15 2014	(r276203)
+++ head/sys/arm/include/asm.h	Thu Dec 25 16:49:33 2014	(r276204)
@@ -75,6 +75,7 @@
 
 /*
  * EENTRY()/EEND() mark "extra" entry/exit points from a function.
+ * LEENTRY()/LEEND() are the the same for local symbols.
  * The unwind info cannot handle the concept of a nested function, or a function
  * with multiple .fnstart directives, but some of our assembler code is written
  * with multiple labels to allow entry at several points.  The EENTRY() macro
@@ -84,11 +85,15 @@
  */
 #define	GLOBAL(x)	.global x
 
-#define	_EENTRY(x) 	GLOBAL(x); .type x,_ASM_TYPE_FUNCTION; x:
-#define	_EEND(x)	/* nothing */
-
-#define	_ENTRY(x)	.text; _ALIGN_TEXT; _EENTRY(x) _FNSTART
-#define	_END(x)		.size x, . - x; _FNEND
+#define	_LEENTRY(x) 	.type x,_ASM_TYPE_FUNCTION; x:
+#define	_LEEND(x)	/* nothing */
+#define	_EENTRY(x) 	GLOBAL(x); _LEENTRY(x)
+#define	_EEND(x)	_LEEND(x)
+
+#define	_LENTRY(x)	.text; _ALIGN_TEXT; _LEENTRY(x); _FNSTART
+#define	_LEND(x)	.size x, . - x; _FNEND
+#define	_ENTRY(x)	.text; _ALIGN_TEXT; _EENTRY(x); _FNSTART
+#define	_END(x)		_LEND(x)
 
 #define	ENTRY(y)	_ENTRY(_C_LABEL(y)); _PROF_PROLOGUE
 #define	EENTRY(y)	_EENTRY(_C_LABEL(y));
@@ -97,11 +102,17 @@
 #define	END(y)		_END(_C_LABEL(y))
 #define	EEND(y)		_EEND(_C_LABEL(y))
 #define	ASENTRY(y)	_ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
+#define	ASLENTRY(y)	_LENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
 #define	ASEENTRY(y)	_EENTRY(_ASM_LABEL(y));
+#define	ASLEENTRY(y)	_LEENTRY(_ASM_LABEL(y));
 #define	ASENTRY_NP(y)	_ENTRY(_ASM_LABEL(y))
+#define	ASLENTRY_NP(y)	_LENTRY(_ASM_LABEL(y))
 #define	ASEENTRY_NP(y)	_EENTRY(_ASM_LABEL(y))
+#define	ASLEENTRY_NP(y)	_LEENTRY(_ASM_LABEL(y))
 #define	ASEND(y)	_END(_ASM_LABEL(y))
+#define	ASLEND(y)	_LEND(_ASM_LABEL(y))
 #define	ASEEND(y)	_EEND(_ASM_LABEL(y))
+#define	ASLEEND(y)	_LEEND(_ASM_LABEL(y))
 
 #define	ASMSTR		.asciz
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201412251649.sBPGnYIK004791>