diff --git a/libc/arch-arm/bionic/__get_sp.S b/libc/arch-arm/bionic/__get_sp.S index 2a7e7b771..aabec6d8c 100644 --- a/libc/arch-arm/bionic/__get_sp.S +++ b/libc/arch-arm/bionic/__get_sp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(__get_sp) mov r0, sp diff --git a/libc/arch-arm/bionic/_setjmp.S b/libc/arch-arm/bionic/_setjmp.S index 239947e0b..64a0a31c9 100644 --- a/libc/arch-arm/bionic/_setjmp.S +++ b/libc/arch-arm/bionic/_setjmp.S @@ -34,7 +34,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include diff --git a/libc/arch-arm/bionic/abort_arm.S b/libc/arch-arm/bionic/abort_arm.S index 1d01ed274..6b181efb7 100644 --- a/libc/arch-arm/bionic/abort_arm.S +++ b/libc/arch-arm/bionic/abort_arm.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include /* * Coding the abort function in assembly so that registers are guaranteed to diff --git a/libc/arch-arm/bionic/memcmp.S b/libc/arch-arm/bionic/memcmp.S index 0dc3af0ca..70a2a58ce 100644 --- a/libc/arch-arm/bionic/memcmp.S +++ b/libc/arch-arm/bionic/memcmp.S @@ -27,7 +27,7 @@ */ #include -#include +#include #ifdef HAVE_32_BYTE_CACHE_LINE diff --git a/libc/arch-arm/bionic/memcmp16.S b/libc/arch-arm/bionic/memcmp16.S index afbb1b047..3f2f2f12d 100644 --- a/libc/arch-arm/bionic/memcmp16.S +++ b/libc/arch-arm/bionic/memcmp16.S @@ -27,7 +27,7 @@ */ #include -#include +#include /* * Optimized memcmp16() for ARM9. diff --git a/libc/arch-arm/bionic/memcpy.S b/libc/arch-arm/bionic/memcpy.S index f25b3e356..2c9b10c1e 100644 --- a/libc/arch-arm/bionic/memcpy.S +++ b/libc/arch-arm/bionic/memcpy.S @@ -27,7 +27,7 @@ */ #include -#include +#include #if defined(__ARM_NEON__) && !defined(ARCH_ARM_USE_NON_NEON_MEMCPY) diff --git a/libc/arch-arm/bionic/memcpy.a9.S b/libc/arch-arm/bionic/memcpy.a9.S index 2ba1ff51d..259701d67 100644 --- a/libc/arch-arm/bionic/memcpy.a9.S +++ b/libc/arch-arm/bionic/memcpy.a9.S @@ -44,7 +44,7 @@ */ #include -#include +#include .syntax unified /* This implementation requires ARM state. */ diff --git a/libc/arch-arm/bionic/setjmp.S b/libc/arch-arm/bionic/setjmp.S index 892708658..ed59d07f1 100644 --- a/libc/arch-arm/bionic/setjmp.S +++ b/libc/arch-arm/bionic/setjmp.S @@ -34,7 +34,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include @@ -112,7 +112,7 @@ ENTRY(longjmp) add sp, sp, #4 /* unalign the stack */ .cfi_adjust_cfa_offset -4 - ldmfd sp!, {r0, r1, r14} + ldmfd sp!, {r0, r1, r14} .cfi_def_cfa_offset 0 #ifdef __ARM_HAVE_VFP diff --git a/libc/arch-arm/bionic/sigsetjmp.S b/libc/arch-arm/bionic/sigsetjmp.S index 59ab9da9b..7016f500c 100644 --- a/libc/arch-arm/bionic/sigsetjmp.S +++ b/libc/arch-arm/bionic/sigsetjmp.S @@ -35,7 +35,7 @@ #define _ALIGN_TEXT .align 0 -#include +#include #include /* diff --git a/libc/arch-arm/bionic/strcmp.S b/libc/arch-arm/bionic/strcmp.S index 42d41d143..6dba942d0 100644 --- a/libc/arch-arm/bionic/strcmp.S +++ b/libc/arch-arm/bionic/strcmp.S @@ -28,7 +28,7 @@ */ #include -#include +#include .text diff --git a/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S b/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S index dc86150d5..36da2d9d8 100644 --- a/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S +++ b/libc/arch-arm/cortex-a15/bionic/__strcat_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S b/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S index 95aaf4f56..c3e3e14fa 100644 --- a/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S +++ b/libc/arch-arm/cortex-a15/bionic/__strcpy_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a15/bionic/memcpy.S b/libc/arch-arm/cortex-a15/bionic/memcpy.S index badc93bf1..da4f3dd79 100644 --- a/libc/arch-arm/cortex-a15/bionic/memcpy.S +++ b/libc/arch-arm/cortex-a15/bionic/memcpy.S @@ -55,8 +55,8 @@ // Prototype: void *memcpy (void *dst, const void *src, size_t count). -#include -#include "private/libc_events.h" +#include +#include .text .syntax unified diff --git a/libc/arch-arm/cortex-a15/bionic/memset.S b/libc/arch-arm/cortex-a15/bionic/memset.S index 4e6d322d6..12c68d6a9 100644 --- a/libc/arch-arm/cortex-a15/bionic/memset.S +++ b/libc/arch-arm/cortex-a15/bionic/memset.S @@ -27,8 +27,8 @@ */ #include -#include -#include "private/libc_events.h" +#include +#include /* * Optimized memset() for ARM. diff --git a/libc/arch-arm/cortex-a15/bionic/strcat.S b/libc/arch-arm/cortex-a15/bionic/strcat.S index 72d4e9eb0..b95be940e 100644 --- a/libc/arch-arm/cortex-a15/bionic/strcat.S +++ b/libc/arch-arm/cortex-a15/bionic/strcat.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a15/bionic/strcmp.S b/libc/arch-arm/cortex-a15/bionic/strcmp.S index 0cccf06c9..12da1158d 100644 --- a/libc/arch-arm/cortex-a15/bionic/strcmp.S +++ b/libc/arch-arm/cortex-a15/bionic/strcmp.S @@ -27,7 +27,7 @@ */ #include -#include +#include #ifdef __ARMEB__ #define S2LOMEM lsl diff --git a/libc/arch-arm/cortex-a15/bionic/strcpy.S b/libc/arch-arm/cortex-a15/bionic/strcpy.S index 577354034..cb878c44f 100644 --- a/libc/arch-arm/cortex-a15/bionic/strcpy.S +++ b/libc/arch-arm/cortex-a15/bionic/strcpy.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a15/bionic/strlen.S b/libc/arch-arm/cortex-a15/bionic/strlen.S index 08f6d193b..9a0ce62a9 100644 --- a/libc/arch-arm/cortex-a15/bionic/strlen.S +++ b/libc/arch-arm/cortex-a15/bionic/strlen.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S b/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S index 700916822..651aefc7d 100644 --- a/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S +++ b/libc/arch-arm/cortex-a9/bionic/__strcat_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified .fpu neon diff --git a/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S b/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S index 908eec4c0..244778024 100644 --- a/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S +++ b/libc/arch-arm/cortex-a9/bionic/__strcpy_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified .fpu neon diff --git a/libc/arch-arm/cortex-a9/bionic/memcpy.S b/libc/arch-arm/cortex-a9/bionic/memcpy.S index 72c1a668c..8dcd937fc 100644 --- a/libc/arch-arm/cortex-a9/bionic/memcpy.S +++ b/libc/arch-arm/cortex-a9/bionic/memcpy.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include /* * This code assumes it is running on a processor that supports all arm v7 diff --git a/libc/arch-arm/cortex-a9/bionic/memset.S b/libc/arch-arm/cortex-a9/bionic/memset.S index 7f77dad42..a5057eb04 100644 --- a/libc/arch-arm/cortex-a9/bionic/memset.S +++ b/libc/arch-arm/cortex-a9/bionic/memset.S @@ -26,9 +26,8 @@ * SUCH DAMAGE. */ -#include -#include -#include "private/libc_events.h" +#include +#include /* * This code assumes it is running on a processor that supports all arm v7 diff --git a/libc/arch-arm/cortex-a9/bionic/strcat.S b/libc/arch-arm/cortex-a9/bionic/strcat.S index 0f5baef4c..f5a855e39 100644 --- a/libc/arch-arm/cortex-a9/bionic/strcat.S +++ b/libc/arch-arm/cortex-a9/bionic/strcat.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a9/bionic/strcmp.S b/libc/arch-arm/cortex-a9/bionic/strcmp.S index eacdb8904..2411c654c 100644 --- a/libc/arch-arm/cortex-a9/bionic/strcmp.S +++ b/libc/arch-arm/cortex-a9/bionic/strcmp.S @@ -27,7 +27,7 @@ */ #include -#include +#include #ifdef __ARMEB__ #define S2LOMEM lsl diff --git a/libc/arch-arm/cortex-a9/bionic/strcpy.S b/libc/arch-arm/cortex-a9/bionic/strcpy.S index 9aa4f883d..9e9610bf3 100644 --- a/libc/arch-arm/cortex-a9/bionic/strcpy.S +++ b/libc/arch-arm/cortex-a9/bionic/strcpy.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/cortex-a9/bionic/strlen.S b/libc/arch-arm/cortex-a9/bionic/strlen.S index 259eda0c4..b92b04352 100644 --- a/libc/arch-arm/cortex-a9/bionic/strlen.S +++ b/libc/arch-arm/cortex-a9/bionic/strlen.S @@ -53,7 +53,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include +#include .syntax unified diff --git a/libc/arch-arm/generic/bionic/memcpy.S b/libc/arch-arm/generic/bionic/memcpy.S index 699b88d7c..cd4a13d12 100644 --- a/libc/arch-arm/generic/bionic/memcpy.S +++ b/libc/arch-arm/generic/bionic/memcpy.S @@ -27,8 +27,8 @@ */ #include -#include -#include "private/libc_events.h" +#include +#include /* * Optimized memcpy() for ARM. diff --git a/libc/arch-arm/generic/bionic/memset.S b/libc/arch-arm/generic/bionic/memset.S index baeb51966..be35de9ff 100644 --- a/libc/arch-arm/generic/bionic/memset.S +++ b/libc/arch-arm/generic/bionic/memset.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include /* * Optimized memset() for ARM. diff --git a/libc/arch-arm/generic/bionic/strcmp.S b/libc/arch-arm/generic/bionic/strcmp.S index 42d41d143..6dba942d0 100644 --- a/libc/arch-arm/generic/bionic/strcmp.S +++ b/libc/arch-arm/generic/bionic/strcmp.S @@ -28,7 +28,7 @@ */ #include -#include +#include .text diff --git a/libc/arch-arm/generic/bionic/strcpy.S b/libc/arch-arm/generic/bionic/strcpy.S index cc997f448..802a62da8 100644 --- a/libc/arch-arm/generic/bionic/strcpy.S +++ b/libc/arch-arm/generic/bionic/strcpy.S @@ -30,7 +30,7 @@ */ #include -#include +#include ENTRY(strcpy) pld [r1, #0] diff --git a/libc/arch-arm/include/machine/asm.h b/libc/arch-arm/include/machine/asm.h index f16baf882..7954f05f1 100644 --- a/libc/arch-arm/include/machine/asm.h +++ b/libc/arch-arm/include/machine/asm.h @@ -38,107 +38,22 @@ #ifndef _ARM32_ASM_H_ #define _ARM32_ASM_H_ -#ifdef __ELF__ -# define _C_LABEL(x) x -#else -# ifdef __STDC__ -# define _C_LABEL(x) _ ## x -# else -# define _C_LABEL(x) _/**/x -# endif -#endif -#define _ASM_LABEL(x) x - -#ifdef __STDC__ -# define __CONCAT(x,y) x ## y -# define __STRING(x) #x -#else -# define __CONCAT(x,y) x/**/y -# define __STRING(x) "x" -#endif - #ifndef _ALIGN_TEXT # define _ALIGN_TEXT .align 0 #endif -/* - * gas/arm uses @ as a single comment character and thus cannot be used here - * Instead it recognised the # instead of an @ symbols in .type directives - * We define a couple of macros so that assembly code will not be dependant - * on one or the other. - */ -#define _ASM_TYPE_FUNCTION #function -#define _ASM_TYPE_OBJECT #object -#define _ENTRY(x) \ - .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .fnstart; .cfi_startproc; +#undef __bionic_asm_custom_entry +#undef __bionic_asm_custom_end +#define __bionic_asm_custom_entry(f) .fnstart +#define __bionic_asm_custom_end(f) .fnend -#define _ASM_SIZE(x) .size x, .-x; - -#define _END(x) \ - .fnend; .cfi_endproc; \ - _ASM_SIZE(x) - -#ifdef GPROF -# ifdef __ELF__ -# define _PROF_PROLOGUE \ - mov ip, lr; bl __mcount -# else -# define _PROF_PROLOGUE \ - mov ip,lr; bl mcount -# endif -#else -# define _PROF_PROLOGUE -#endif - -#define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE -#define ENTRY_NP(y) _ENTRY(_C_LABEL(y)) -#define END(y) _END(_C_LABEL(y)) -#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE -#define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y)) -#define ASEND(y) _END(_ASM_LABEL(y)) - -#ifdef __ELF__ -#define ENTRY_PRIVATE(y) ENTRY(y); .hidden _C_LABEL(y) -#else -#define ENTRY_PRIVATE(y) ENTRY(y) -#endif - -#define ASMSTR .asciz +#undef __bionic_asm_function_type +#define __bionic_asm_function_type #function #if defined(__ELF__) && defined(PIC) -#ifdef __STDC__ -#define PIC_SYM(x,y) x ## ( ## y ## ) +#define PIC_SYM(x,y) x ## ( ## y ## ) #else -#define PIC_SYM(x,y) x/**/(/**/y/**/) +#define PIC_SYM(x,y) x #endif -#else -#define PIC_SYM(x,y) x -#endif - -#ifdef __ELF__ -#define RCSID(x) .section ".ident"; .asciz x -#else -#define RCSID(x) .text; .asciz x -#endif - -#ifdef __ELF__ -#define WEAK_ALIAS(alias,sym) \ - .weak alias; \ - alias = sym -#endif - -#ifdef __STDC__ -#define WARN_REFERENCES(sym,msg) \ - .stabs msg ## ,30,0,0,0 ; \ - .stabs __STRING(_C_LABEL(sym)) ## ,1,0,0,0 -#elif defined(__ELF__) -#define WARN_REFERENCES(sym,msg) \ - .stabs msg,30,0,0,0 ; \ - .stabs __STRING(sym),1,0,0,0 -#else -#define WARN_REFERENCES(sym,msg) \ - .stabs msg,30,0,0,0 ; \ - .stabs __STRING(_/**/sym),1,0,0,0 -#endif /* __STDC__ */ #endif /* !_ARM_ASM_H_ */ diff --git a/libc/arch-arm/krait/bionic/__strcat_chk.S b/libc/arch-arm/krait/bionic/__strcat_chk.S index a5d06f3f8..34becdbbf 100644 --- a/libc/arch-arm/krait/bionic/__strcat_chk.S +++ b/libc/arch-arm/krait/bionic/__strcat_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified diff --git a/libc/arch-arm/krait/bionic/__strcpy_chk.S b/libc/arch-arm/krait/bionic/__strcpy_chk.S index 95aaf4f56..c3e3e14fa 100644 --- a/libc/arch-arm/krait/bionic/__strcpy_chk.S +++ b/libc/arch-arm/krait/bionic/__strcpy_chk.S @@ -26,8 +26,8 @@ * SUCH DAMAGE. */ -#include -#include "private/libc_events.h" +#include +#include .syntax unified diff --git a/libc/arch-arm/krait/bionic/memcpy.S b/libc/arch-arm/krait/bionic/memcpy.S index 54405fa9d..0b7b27659 100644 --- a/libc/arch-arm/krait/bionic/memcpy.S +++ b/libc/arch-arm/krait/bionic/memcpy.S @@ -28,8 +28,8 @@ /* Assumes neon instructions and a cache line size of 32 bytes. */ -#include -#include "private/libc_events.h" +#include +#include /* * This code assumes it is running on a processor that supports all arm v7 diff --git a/libc/arch-arm/krait/bionic/memset.S b/libc/arch-arm/krait/bionic/memset.S index 1563327c4..5d1943b72 100644 --- a/libc/arch-arm/krait/bionic/memset.S +++ b/libc/arch-arm/krait/bionic/memset.S @@ -27,8 +27,8 @@ */ #include -#include -#include "private/libc_events.h" +#include +#include /* * This code assumes it is running on a processor that supports all arm v7 diff --git a/libc/arch-arm/krait/bionic/strcmp.S b/libc/arch-arm/krait/bionic/strcmp.S index f735fb5e7..eacb82a6e 100644 --- a/libc/arch-arm/krait/bionic/strcmp.S +++ b/libc/arch-arm/krait/bionic/strcmp.S @@ -27,7 +27,7 @@ */ #include -#include +#include #ifdef __ARMEB__ #define S2LOMEM lsl diff --git a/libc/arch-arm64/bionic/__get_sp.S b/libc/arch-arm64/bionic/__get_sp.S index 3cd4ceb16..d495b6aff 100644 --- a/libc/arch-arm64/bionic/__get_sp.S +++ b/libc/arch-arm64/bionic/__get_sp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(__get_sp) mov x0, sp diff --git a/libc/arch-arm64/bionic/__rt_sigreturn.S b/libc/arch-arm64/bionic/__rt_sigreturn.S index d176ea39f..8fb6f0c28 100644 --- a/libc/arch-arm64/bionic/__rt_sigreturn.S +++ b/libc/arch-arm64/bionic/__rt_sigreturn.S @@ -26,8 +26,7 @@ * SUCH DAMAGE. */ -#include -#include +#include ENTRY_PRIVATE(__rt_sigreturn) mov x8, __NR_rt_sigreturn diff --git a/libc/arch-arm64/bionic/_setjmp.S b/libc/arch-arm64/bionic/_setjmp.S index 6cbf5c6ba..dfa861b19 100644 --- a/libc/arch-arm64/bionic/_setjmp.S +++ b/libc/arch-arm64/bionic/_setjmp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include #include /* diff --git a/libc/arch-arm64/bionic/setjmp.S b/libc/arch-arm64/bionic/setjmp.S index 2d8631b2c..9a68d8646 100644 --- a/libc/arch-arm64/bionic/setjmp.S +++ b/libc/arch-arm64/bionic/setjmp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include #include /* diff --git a/libc/arch-arm64/bionic/sigsetjmp.S b/libc/arch-arm64/bionic/sigsetjmp.S index cde1cbb2b..4fdb3679d 100644 --- a/libc/arch-arm64/bionic/sigsetjmp.S +++ b/libc/arch-arm64/bionic/sigsetjmp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include #include /* diff --git a/libc/arch-arm64/include/machine/asm.h b/libc/arch-arm64/include/machine/asm.h index 3f8b908c6..4bfabaf95 100644 --- a/libc/arch-arm64/include/machine/asm.h +++ b/libc/arch-arm64/include/machine/asm.h @@ -38,91 +38,17 @@ #ifndef _AARCH64_ASM_H_ #define _AARCH64_ASM_H_ -/* TODO: Add cfi directives for creating/restoring FP */ -#ifdef __ELF__ -# define _C_LABEL(x) x -#else -# ifdef __STDC__ -# define _C_LABEL(x) _ ## x -# else -# define _C_LABEL(x) _/**/x -# endif -#endif -#define _ASM_LABEL(x) x - -#ifdef __STDC__ -# define __CONCAT(x,y) x ## y -# define __STRING(x) #x -#else -# define __CONCAT(x,y) x/**/y -# define __STRING(x) "x" -#endif - #ifndef _ALIGN_TEXT -# define _ALIGN_TEXT .align 0 +# define _ALIGN_TEXT .align 0 #endif -#define _ASM_TYPE_FUNCTION %function -#define _ASM_TYPE_OBJECT %object -#define _ENTRY(x) \ - .text; _ALIGN_TEXT; .globl x; .type x,_ASM_TYPE_FUNCTION; x: .cfi_startproc - -#define _ASM_SIZE(x) .size x, .-x; - -#define _END(x) \ - .cfi_endproc; \ - _ASM_SIZE(x) - -#define ENTRY(y) _ENTRY(_C_LABEL(y)); -#define ENTRY_NP(y) _ENTRY(_C_LABEL(y)) -#define END(y) _END(_C_LABEL(y)) -#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE -#define ASENTRY_NP(y) _ENTRY(_ASM_LABEL(y)) -#define ASEND(y) _END(_ASM_LABEL(y)) - -#ifdef __ELF__ -#define ENTRY_PRIVATE(y) ENTRY(y); .hidden _C_LABEL(y) -#else -#define ENTRY_PRIVATE(y) ENTRY(y) -#endif - -#define ASMSTR .asciz +#undef __bionic_asm_function_type +#define __bionic_asm_function_type %function #if defined(__ELF__) && defined(PIC) -#ifdef __STDC__ -#define PIC_SYM(x,y) x ## ( ## y ## ) +#define PIC_SYM(x,y) x ## ( ## y ## ) #else -#define PIC_SYM(x,y) x/**/(/**/y/**/) +#define PIC_SYM(x,y) x #endif -#else -#define PIC_SYM(x,y) x -#endif - -#ifdef __ELF__ -#define RCSID(x) .section ".ident"; .asciz x -#else -#define RCSID(x) .text; .asciz x -#endif - -#ifdef __ELF__ -#define WEAK_ALIAS(alias,sym) \ - .weak alias; \ - alias = sym -#endif - -#ifdef __STDC__ -#define WARN_REFERENCES(sym,msg) \ - .stabs msg ## ,30,0,0,0 ; \ - .stabs __STRING(_C_LABEL(sym)) ## ,1,0,0,0 -#elif defined(__ELF__) -#define WARN_REFERENCES(sym,msg) \ - .stabs msg,30,0,0,0 ; \ - .stabs __STRING(sym),1,0,0,0 -#else -#define WARN_REFERENCES(sym,msg) \ - .stabs msg,30,0,0,0 ; \ - .stabs __STRING(_/**/sym),1,0,0,0 -#endif /* __STDC__ */ #endif /* _AARCH64_ASM_H_ */ - diff --git a/libc/arch-mips/bionic/__bionic_clone.S b/libc/arch-mips/bionic/__bionic_clone.S index 8970b6ec7..92731347d 100644 --- a/libc/arch-mips/bionic/__bionic_clone.S +++ b/libc/arch-mips/bionic/__bionic_clone.S @@ -26,49 +26,43 @@ * SUCH DAMAGE. */ -#include +#include #include #include // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg); - .text - .type __bionic_clone, @function - .global __bionic_clone - .align 4 - .ent __bionic_clone -__bionic_clone: +ENTRY(__bionic_clone) .set noreorder - .cpload $t9 + .cpload t9 .set reorder # set up child stack - subu $a1,16 - lw $t0,20($sp) # fn - lw $t1,24($sp) # arg - sw $t0,0($a1) # fn - sw $t1,4($a1) # arg + subu a1,16 + lw t0,20(sp) # fn + lw t1,24(sp) # arg + sw t0,0(a1) # fn + sw t1,4(a1) # arg # remainder of arguments are correct for clone system call - li $v0,__NR_clone + li v0,__NR_clone syscall - bnez $a3,.L__error_bc + bnez a3,.L__error_bc - beqz $v0,.L__thread_start_bc + beqz v0,.L__thread_start_bc - j $ra + j ra .L__thread_start_bc: - lw $a0,0($sp) # fn - lw $a1,4($sp) # arg + lw a0,0(sp) # fn + lw a1,4(sp) # arg # void __bionic_clone_entry(int (*func)(void*), void *arg) - la $t9,__bionic_clone_entry - j $t9 + la t9,__bionic_clone_entry + j t9 .L__error_bc: - move $a0,$v0 - la $t9,__set_errno - j $t9 - - .end __bionic_clone + move a0,v0 + la t9,__set_errno + j t9 +END(__bionic_clone) diff --git a/libc/arch-mips/bionic/__get_sp.S b/libc/arch-mips/bionic/__get_sp.S index 834c89d82..d4b278b24 100644 --- a/libc/arch-mips/bionic/__get_sp.S +++ b/libc/arch-mips/bionic/__get_sp.S @@ -25,15 +25,11 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - .text -/* void *__get_sp(void) */ +#include - .type __get_sp, @function - .global __get_sp - .align 4 - .ent __get_sp -__get_sp: - move $v0, $sp - j $ra - .end __get_sp +// void* __get_sp() +ENTRY(__get_sp) + move v0, sp + j ra +END(__get_sp) diff --git a/libc/arch-mips/bionic/_exit_with_stack_teardown.S b/libc/arch-mips/bionic/_exit_with_stack_teardown.S index 8f624c324..129e3f9a3 100644 --- a/libc/arch-mips/bionic/_exit_with_stack_teardown.S +++ b/libc/arch-mips/bionic/_exit_with_stack_teardown.S @@ -26,23 +26,16 @@ * SUCH DAMAGE. */ -#include - - .text +#include // void _exit_with_stack_teardown(void* stackBase, size_t stackSize) - - .type _exit_with_stack_teardown, @function - .global _exit_with_stack_teardown - .align 4 - .ent _exit_with_stack_teardown -_exit_with_stack_teardown: - li $v0, __NR_munmap +ENTRY(_exit_with_stack_teardown) + li v0, __NR_munmap syscall // If munmap failed, we ignore the failure and exit anyway. - li $a0, 0 - li $v0, __NR_exit + li a0, 0 + li v0, __NR_exit syscall // The exit syscall does not return. - .end _exit_with_stack_teardown +END(_exit_with_stack_teardown) diff --git a/libc/arch-mips/bionic/_setjmp.S b/libc/arch-mips/bionic/_setjmp.S index e7083ae29..4465cd20e 100644 --- a/libc/arch-mips/bionic/_setjmp.S +++ b/libc/arch-mips/bionic/_setjmp.S @@ -2,7 +2,7 @@ /* * Copyright (c) 2002 Opsycon AB (www.opsycon.se / www.opsycon.com) - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -29,7 +29,7 @@ * */ -#include +#include #include #include @@ -48,13 +48,13 @@ GPOFF= FRAMESZ-2*REGSZ swc1 FPR, OFF(BASE) ; \ mfhc1 t0, FPR ; \ sw t0, OFF+4(BASE) ; - + #define FPREG64_L(FPR, OFF, BASE) \ lw t0, OFF+4(BASE) ; \ lw t1, OFF(BASE) ; \ mtc1 t1, FPR ; \ mthc1 t0, FPR ; \ - + LEAF(_setjmp, FRAMESZ) PTR_SUBU sp, FRAMESZ SETUP_GP64(GPOFF, _setjmp) @@ -185,4 +185,3 @@ botch: RESTORE_GP64 PTR_ADDU sp, FRAMESZ END(_longjmp) - diff --git a/libc/arch-mips/bionic/bzero.S b/libc/arch-mips/bionic/bzero.S index 67393455a..6e5d2947f 100644 --- a/libc/arch-mips/bionic/bzero.S +++ b/libc/arch-mips/bionic/bzero.S @@ -25,21 +25,15 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - .text -/* - * void bzero(void *s, size_t n); - */ - .type bzero, @function - .global bzero - .align 4 - .ent bzero +#include + +// void bzero(void*, size_t); +ENTRY(bzero) .set noreorder -bzero: - .cpload $t9 - move $a2,$a1 - la $t9,memset - j $t9 - move $a1,$zero - .end bzero - + .cpload t9 + move a2,a1 + la t9,memset + j t9 + move a1,zero +END(bzero) diff --git a/libc/arch-mips/bionic/futex_mips.S b/libc/arch-mips/bionic/futex_mips.S index 285beacfa..7626a7ca1 100644 --- a/libc/arch-mips/bionic/futex_mips.S +++ b/libc/arch-mips/bionic/futex_mips.S @@ -32,11 +32,7 @@ #define FUTEX_WAKE 1 // int __futex_wait(volatile void* ftx, int val, const struct timespec* timeout) - .type __futex_wait, @function - .global __futex_wait - .align 4 - .ent __futex_wait -__futex_wait: +ENTRY(__futex_wait) subu sp,4*6 sw $0,20(sp) /* val3 */ sw $0,16(sp) /* addr2 */ @@ -54,14 +50,10 @@ __futex_wait: .set reorder addu sp,4*6 j ra - .end __futex_wait +END(__futex_wait) // int __futex_wake(volatile void* ftx, int count) - .type __futex_wake, @function - .globl __futex_wake - .align 4 - .ent __futex_wake -__futex_wake: +ENTRY(__futex_wake) subu sp,4*6 sw $0,20(sp) /* val3 */ sw $0,16(sp) /* addr2 */ @@ -79,14 +71,10 @@ __futex_wake: .set reorder addu sp,4*6 j ra - .end __futex_wake +END(__futex_wake) // int __futex_syscall3(volatile void* ftx, int op, int count) - .type __futex_syscall3, @function - .global __futex_syscall3 - .align 4 - .ent __futex_syscall3 -__futex_syscall3: +ENTRY(__futex_syscall3) subu sp,4*6 sw $0,20(sp) /* val3 */ sw $0,16(sp) /* addr2 */ @@ -104,14 +92,10 @@ __futex_syscall3: .set reorder addu sp,4*6 j ra - .end __futex_syscall3 +END(__futex_syscall3) // int __futex_syscall4(volatile void* ftx, int op, int val, const struct timespec* timeout) - .type __futex_syscall4, @function - .global __futex_syscall4 - .align 4 - .ent __futex_syscall4 -__futex_syscall4: +ENTRY(__futex_syscall4) subu sp,4*6 sw $0,20(sp) /* val3 */ sw $0,16(sp) /* addr2 */ @@ -129,4 +113,4 @@ __futex_syscall4: .set reorder addu sp,4*6 j ra - .end __futex_syscall4 +END(__futex_syscall4) diff --git a/libc/arch-mips/bionic/memcmp16.S b/libc/arch-mips/bionic/memcmp16.S index a2b254439..f9d14a93a 100644 --- a/libc/arch-mips/bionic/memcmp16.S +++ b/libc/arch-mips/bionic/memcmp16.S @@ -25,31 +25,26 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - .text -/* - * u4 __memcmp16(const u2* s0, const u2* s1, size_t count); - */ - .type __memcmp16, @function - .global __memcmp16 - .align 4 - .ent __memcmp16 -__memcmp16: - li $t0,0 - li $t1,0 - beqz $a2,done /* 0 length string */ - beq $a0,$a1,done /* strings are identical */ +#include + +// u4 __memcmp16(const u2*, const u2*, size_t); +ENTRY(__memcmp16) + li t0,0 + li t1,0 + beqz a2,done /* 0 length string */ + beq a0,a1,done /* strings are identical */ /* Unoptimised... */ -1: lhu $t0,0($a0) - lhu $t1,0($a1) - addu $a1,2 - bne $t0,$t1,done - addu $a0,2 - subu $a2,1 - bnez $a2,1b +1: lhu t0,0(a0) + lhu t1,0(a1) + addu a1,2 + bne t0,t1,done + addu a0,2 + subu a2,1 + bnez a2,1b done: - subu $v0,$t0,$t1 - j $ra - .end __memcmp16 + subu v0,t0,t1 + j ra +END(__memcmp16) diff --git a/libc/arch-mips/bionic/setjmp.S b/libc/arch-mips/bionic/setjmp.S index 7c21195b6..2af1fbdce 100644 --- a/libc/arch-mips/bionic/setjmp.S +++ b/libc/arch-mips/bionic/setjmp.S @@ -29,7 +29,7 @@ * */ -#include +#include #include #include @@ -49,13 +49,13 @@ RAOFF= FRAMESZ-1*REGSZ swc1 FPR, OFF(BASE) ; \ mfhc1 t0, FPR ; \ sw t0, OFF+4(BASE) ; - + #define FPREG64_L(FPR, OFF, BASE) \ lw t0, OFF+4(BASE) ; \ lw t1, OFF(BASE) ; \ mtc1 t1, FPR ; \ mthc1 t0, FPR ; \ - + NON_LEAF(setjmp, FRAMESZ, ra) .mask 0x80000000, RAOFF PTR_SUBU sp, FRAMESZ # allocate stack frame @@ -154,7 +154,7 @@ LEAF(longjmp, FRAMESZ) lw a0, A0OFF(sp) lw a1, A1OFF(sp) - .set noreorder + .set noreorder REG_L v0, SC_REGS+ZERO*REGSZ(a0) bne v0, 0xACEDBADE, botch # jump if error REG_L ra, SC_PC(a0) @@ -169,9 +169,9 @@ LEAF(longjmp, FRAMESZ) REG_L s8, SC_REGS+S8*REGSZ(a0) REG_L gp, SC_REGS+GP*REGSZ(a0) REG_L sp, SC_REGS+SP*REGSZ(a0) - + #if !defined(SOFTFLOAT) - REG_L v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0) + REG_L v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0) ctc1 v0, $31 #if _MIPS_FPSET == 32 FPREG64_L($f20, SC_FPREGS+((F20-F0)*REGSZ_FP), a0) diff --git a/libc/arch-mips/bionic/sigsetjmp.S b/libc/arch-mips/bionic/sigsetjmp.S index b05454c28..9d2e5ea87 100644 --- a/libc/arch-mips/bionic/sigsetjmp.S +++ b/libc/arch-mips/bionic/sigsetjmp.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include diff --git a/libc/arch-mips/bionic/syscall.S b/libc/arch-mips/bionic/syscall.S index af5bcc9ab..db477a506 100644 --- a/libc/arch-mips/bionic/syscall.S +++ b/libc/arch-mips/bionic/syscall.S @@ -26,11 +26,7 @@ * SUCH DAMAGE. */ -#include - .text - .globl syscall - .align 4 - .ent syscall +#include /* * The caller is only required to allocate 16 bytes of stack for a0-a3. @@ -38,28 +34,28 @@ */ #define STACKSIZE 2*4 -syscall: +ENTRY(syscall) .set noreorder - .cpload $t9 - move $v0, $a0 - move $a0, $a1 - move $a1, $a2 - move $a2, $a3 - lw $a3, 16($sp) - lw $t0, 20($sp) - lw $t1, 24($sp) - subu $sp, STACKSIZE - sw $t0, 16($sp) - sw $t1, 20($sp) + .cpload t9 + move v0, a0 + move a0, a1 + move a1, a2 + move a2, a3 + lw a3, 16(sp) + lw t0, 20(sp) + lw t1, 24(sp) + subu sp, STACKSIZE + sw t0, 16(sp) + sw t1, 20(sp) syscall - addu $sp, STACKSIZE - bnez $a3, 1f - move $a0, $v0 - j $ra + addu sp, STACKSIZE + bnez a3, 1f + move a0, v0 + j ra nop 1: - la $t9,__set_errno - j $t9 + la t9,__set_errno + j t9 nop .set reorder - .end syscall +END(syscall) diff --git a/libc/arch-mips/bionic/vfork.S b/libc/arch-mips/bionic/vfork.S index 414caaf4e..96de69e20 100644 --- a/libc/arch-mips/bionic/vfork.S +++ b/libc/arch-mips/bionic/vfork.S @@ -26,39 +26,33 @@ * SUCH DAMAGE. */ -#include +#include #include // TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__. // #include #define SIGCHLD 18 - .text - - .type vfork, @function - .global vfork - .align 4 - .ent vfork -vfork: +ENTRY(vfork) .set noreorder - .cpload $t9 + .cpload t9 - li $a0, (CLONE_VM | CLONE_VFORK | SIGCHLD) - li $a1, 0 - li $a2, 0 - li $a3, 0 - subu $sp, 8 - sw $0, 16($sp) - li $v0, __NR_clone + li a0, (CLONE_VM | CLONE_VFORK | SIGCHLD) + li a1, 0 + li a2, 0 + li a3, 0 + subu sp, 8 + sw $0, 16(sp) + li v0, __NR_clone syscall - addu $sp, 8 - bnez $a3, 1f - move $a0, $v0 + addu sp, 8 + bnez a3, 1f + move a0, v0 - j $ra + j ra nop 1: - la $t9, __set_errno - j $t9 + la t9, __set_errno + j t9 nop - .end vfork +END(vfork) diff --git a/libc/arch-mips/include/machine/asm.h b/libc/arch-mips/include/machine/asm.h index 43dbc09a8..5eacde3df 100644 --- a/libc/arch-mips/include/machine/asm.h +++ b/libc/arch-mips/include/machine/asm.h @@ -28,25 +28,24 @@ #ifndef _MIPS64_ASM_H #define _MIPS64_ASM_H -#include - -#ifdef NEED_OLD_RM7KFIX -#define ITLBNOPFIX nop;nop;nop;nop;nop;nop;nop;nop;nop;nop; -#else -#define ITLBNOPFIX nop;nop;nop;nop +#ifndef _ALIGN_TEXT +# define _ALIGN_TEXT .align 4 #endif +#undef __bionic_asm_custom_entry +#undef __bionic_asm_custom_end +#define __bionic_asm_custom_entry(f) .ent f +#define __bionic_asm_custom_end(f) .end f + +#include + #define _MIPS_ISA_MIPS1 1 /* R2000/R3000 */ #define _MIPS_ISA_MIPS2 2 /* R4000/R6000 */ #define _MIPS_ISA_MIPS3 3 /* R4000 */ #define _MIPS_ISA_MIPS4 4 /* TFP (R1x000) */ -#ifdef __linux__ #define _MIPS_ISA_MIPS5 5 #define _MIPS_ISA_MIPS32 6 #define _MIPS_ISA_MIPS64 7 -#else -#define _MIPS_ISA_MIPS32 32 /* MIPS32 */ -#endif #if !defined(ABICALLS) && !defined(_NO_ABICALLS) #define ABICALLS .abicalls @@ -56,8 +55,6 @@ ABICALLS #endif -#define _C_LABEL(x) x /* XXX Obsolete but keep for a while */ - #if !defined(__MIPSEL__) && !defined(__MIPSEB__) #error "__MIPSEL__ or __MIPSEB__ must be defined" #endif @@ -90,15 +87,6 @@ */ #if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE) -#ifndef _MIPS_SIM -#define _MIPS_SIM 1 -#define _ABIO32 1 -#endif -#ifndef _MIPS_ISA -#define _MIPS_ISA 2 -#define _MIPS_ISA_MIPS2 2 -#endif - #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32) #define NARGSAVE 4 @@ -151,7 +139,7 @@ #define CF_RA_OFFS 20 /* Call ra save offset */ #endif -#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4) +#if (_MIPS_ISA == _MIPS_ISA_MIPS3 || _MIPS_ISA == _MIPS_ISA_MIPS4 || _MIPS_ISA == _MIPS_ISA_MIPS64) #define REGSZ 8 /* 64 bit mode register size */ #define LOGREGSZ 3 /* log rsize */ #define REG_S sd @@ -189,28 +177,6 @@ #define PTR_VAL .dword #endif -/* - * Define -pg profile entry code. - */ -#if defined(XGPROF) || defined(XPROF) -#define MCOUNT \ - PTR_SUBU sp, sp, 32; \ - SAVE_GP(16); \ - sw ra, 28(sp); \ - sw gp, 24(sp); \ - .set noat; \ - .set noreorder; \ - move AT, ra; \ - jal _mcount; \ - PTR_SUBU sp, sp, 8; \ - lw ra, 28(sp); \ - PTR_ADDU sp, sp, 32; \ - .set reorder; \ - .set at; -#else -#define MCOUNT -#endif - /* * LEAF(x, fsize) * @@ -221,26 +187,9 @@ .globl x; \ .ent x, 0; \ x: ; \ + .cfi_startproc; \ .frame sp, fsize, ra; \ SETUP_GP \ - MCOUNT - -#define ALEAF(x) \ - .globl x; \ -x: - -/* - * NLEAF(x) - * - * Declare a non-profiled leaf routine. - */ -#define NLEAF(x, fsize) \ - .align 3; \ - .globl x; \ - .ent x, 0; \ -x: ; \ - .frame sp, fsize, ra; \ - SETUP_GP /* * NON_LEAF(x) @@ -252,54 +201,8 @@ x: ; \ .globl x; \ .ent x, 0; \ x: ; \ + .cfi_startproc; \ .frame sp, fsize, retpc; \ SETUP_GP \ - MCOUNT - -/* - * NNON_LEAF(x) - * - * Declare a non-profiled non-leaf routine - * (a routine that makes other C calls). - */ -#define NNON_LEAF(x, fsize, retpc) \ - .align 3; \ - .globl x; \ - .ent x, 0; \ -x: ; \ - .frame sp, fsize, retpc \ - SETUP_GP - -/* - * END(x) - * - * Mark end of a procedure. - */ -#define END(x) \ - .end x - -/* - * Macros to panic and printf from assembly language. - */ -#define PANIC(msg) \ - LA a0, 9f; \ - jal panic; \ - nop ; \ - MSG(msg) - -#define PRINTF(msg) \ - la a0, 9f; \ - jal printf; \ - nop ; \ - MSG(msg) - -#define MSG(msg) \ - .rdata; \ -9: .asciiz msg; \ - .text - -#define ASMSTR(str) \ - .asciiz str; \ - .align 3 #endif /* !_MIPS_ASM_H */ diff --git a/libc/arch-mips/include/machine/signal.h b/libc/arch-mips/include/machine/signal.h index f02ec0d22..b31715cce 100644 --- a/libc/arch-mips/include/machine/signal.h +++ b/libc/arch-mips/include/machine/signal.h @@ -37,8 +37,6 @@ #ifndef _MIPS_SIGNAL_H_ #define _MIPS_SIGNAL_H_ -#include - #define SC_REGMASK (0*REGSZ) #define SC_STATUS (1*REGSZ) #define SC_PC (2*REGSZ) diff --git a/libc/arch-mips/string/memcpy.S b/libc/arch-mips/string/memcpy.S index aabdfcfdc..dc91096bd 100644 --- a/libc/arch-mips/string/memcpy.S +++ b/libc/arch-mips/string/memcpy.S @@ -39,13 +39,13 @@ * Include files ************************************************************************/ -#include "machine/asm.h" +#include -/* +/* * This routine could be optimized for MIPS64. The current code only * uses MIPS32 instructions. - */ + */ #if defined(__MIPSEB__) # define LWHI lwl /* high part is left in big-endian */ # define SWHI swl /* high part is left in big-endian */ diff --git a/libc/arch-mips/string/memset.S b/libc/arch-mips/string/memset.S index a1c5055c4..3e630caf8 100644 --- a/libc/arch-mips/string/memset.S +++ b/libc/arch-mips/string/memset.S @@ -39,12 +39,12 @@ * Include files ************************************************************************/ -#include "machine/asm.h" +#include -/* +/* * This routine could be optimized for MIPS64. The current code only * uses MIPS32 instructions. - */ + */ #if defined(__MIPSEB__) # define SWHI swl /* high part is left in big-endian */ @@ -220,7 +220,7 @@ LEAF(memset,0) sw a1,-36(a0) nop nop # the extra nop instructions help to balance - nop # cycles needed for "store" + "fill" + "evict" + nop # cycles needed for "store" + "fill" + "evict" nop # For 64byte store there are needed 8 fill nop # and 8 evict cycles, i.e. at least 32 instr. nop @@ -320,4 +320,3 @@ END(memset) /************************************************************************ * Implementation : Static functions ************************************************************************/ - diff --git a/libc/arch-mips64/bionic/__bionic_clone.S b/libc/arch-mips64/bionic/__bionic_clone.S index 2a9a2b084..e1ade30be 100644 --- a/libc/arch-mips64/bionic/__bionic_clone.S +++ b/libc/arch-mips64/bionic/__bionic_clone.S @@ -26,8 +26,7 @@ * SUCH DAMAGE. */ -#include -#include +#include #include #include @@ -43,8 +42,7 @@ FRAME_FN = FRAMESZ-3*REGSZ #endif // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg); - .text -LEAF(__bionic_clone,FRAMESZ) +LEAF(__bionic_clone, FRAMESZ) PTR_SUBU sp, FRAMESZ # allocate stack frame SETUP_GP64(FRAME_GP,__bionic_clone) SAVE_GP(FRAME_GP) diff --git a/libc/arch-mips64/bionic/__get_sp.S b/libc/arch-mips64/bionic/__get_sp.S index 834c89d82..8488102b6 100644 --- a/libc/arch-mips64/bionic/__get_sp.S +++ b/libc/arch-mips64/bionic/__get_sp.S @@ -25,15 +25,10 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - .text -/* void *__get_sp(void) */ +#include - .type __get_sp, @function - .global __get_sp - .align 4 - .ent __get_sp -__get_sp: - move $v0, $sp - j $ra - .end __get_sp +ENTRY(__get_sp) + move v0, sp + j ra +END(__get_sp) diff --git a/libc/arch-mips64/bionic/_exit_with_stack_teardown.S b/libc/arch-mips64/bionic/_exit_with_stack_teardown.S index 8f624c324..3b537eb21 100644 --- a/libc/arch-mips64/bionic/_exit_with_stack_teardown.S +++ b/libc/arch-mips64/bionic/_exit_with_stack_teardown.S @@ -26,23 +26,16 @@ * SUCH DAMAGE. */ -#include - - .text +#include // void _exit_with_stack_teardown(void* stackBase, size_t stackSize) +ENTRY(_exit_with_stack_teardown) + li v0, __NR_munmap + syscall + // If munmap failed, we ignore the failure and exit anyway. - .type _exit_with_stack_teardown, @function - .global _exit_with_stack_teardown - .align 4 - .ent _exit_with_stack_teardown -_exit_with_stack_teardown: - li $v0, __NR_munmap - syscall - // If munmap failed, we ignore the failure and exit anyway. - - li $a0, 0 - li $v0, __NR_exit - syscall - // The exit syscall does not return. - .end _exit_with_stack_teardown + li a0, 0 + li v0, __NR_exit + syscall + // The exit syscall does not return. +END(_exit_with_stack_teardown) diff --git a/libc/arch-mips64/bionic/_setjmp.S b/libc/arch-mips64/bionic/_setjmp.S index e7083ae29..4465cd20e 100644 --- a/libc/arch-mips64/bionic/_setjmp.S +++ b/libc/arch-mips64/bionic/_setjmp.S @@ -2,7 +2,7 @@ /* * Copyright (c) 2002 Opsycon AB (www.opsycon.se / www.opsycon.com) - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: @@ -29,7 +29,7 @@ * */ -#include +#include #include #include @@ -48,13 +48,13 @@ GPOFF= FRAMESZ-2*REGSZ swc1 FPR, OFF(BASE) ; \ mfhc1 t0, FPR ; \ sw t0, OFF+4(BASE) ; - + #define FPREG64_L(FPR, OFF, BASE) \ lw t0, OFF+4(BASE) ; \ lw t1, OFF(BASE) ; \ mtc1 t1, FPR ; \ mthc1 t0, FPR ; \ - + LEAF(_setjmp, FRAMESZ) PTR_SUBU sp, FRAMESZ SETUP_GP64(GPOFF, _setjmp) @@ -185,4 +185,3 @@ botch: RESTORE_GP64 PTR_ADDU sp, FRAMESZ END(_longjmp) - diff --git a/libc/arch-mips64/bionic/bzero.S b/libc/arch-mips64/bionic/bzero.S index d0b5c847c..76c6bc278 100644 --- a/libc/arch-mips64/bionic/bzero.S +++ b/libc/arch-mips64/bionic/bzero.S @@ -25,9 +25,8 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ - .text -#include +#include /* * void bzero(void *s, size_t n); @@ -40,4 +39,3 @@ LEAF(bzero,0) RESTORE_GP64 j t9 END(bzero) - diff --git a/libc/arch-mips64/bionic/memcmp16.S b/libc/arch-mips64/bionic/memcmp16.S index b70c078e7..1c58c1b49 100644 --- a/libc/arch-mips64/bionic/memcmp16.S +++ b/libc/arch-mips64/bionic/memcmp16.S @@ -27,7 +27,7 @@ */ .text -#include +#include /* * u4 __memcmp16(const u2* s0, const u2* s1, size_t count); diff --git a/libc/arch-mips64/bionic/setjmp.S b/libc/arch-mips64/bionic/setjmp.S index 7c21195b6..2af1fbdce 100644 --- a/libc/arch-mips64/bionic/setjmp.S +++ b/libc/arch-mips64/bionic/setjmp.S @@ -29,7 +29,7 @@ * */ -#include +#include #include #include @@ -49,13 +49,13 @@ RAOFF= FRAMESZ-1*REGSZ swc1 FPR, OFF(BASE) ; \ mfhc1 t0, FPR ; \ sw t0, OFF+4(BASE) ; - + #define FPREG64_L(FPR, OFF, BASE) \ lw t0, OFF+4(BASE) ; \ lw t1, OFF(BASE) ; \ mtc1 t1, FPR ; \ mthc1 t0, FPR ; \ - + NON_LEAF(setjmp, FRAMESZ, ra) .mask 0x80000000, RAOFF PTR_SUBU sp, FRAMESZ # allocate stack frame @@ -154,7 +154,7 @@ LEAF(longjmp, FRAMESZ) lw a0, A0OFF(sp) lw a1, A1OFF(sp) - .set noreorder + .set noreorder REG_L v0, SC_REGS+ZERO*REGSZ(a0) bne v0, 0xACEDBADE, botch # jump if error REG_L ra, SC_PC(a0) @@ -169,9 +169,9 @@ LEAF(longjmp, FRAMESZ) REG_L s8, SC_REGS+S8*REGSZ(a0) REG_L gp, SC_REGS+GP*REGSZ(a0) REG_L sp, SC_REGS+SP*REGSZ(a0) - + #if !defined(SOFTFLOAT) - REG_L v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0) + REG_L v0, SC_FPREGS+((FSR-F0)*REGSZ)(a0) ctc1 v0, $31 #if _MIPS_FPSET == 32 FPREG64_L($f20, SC_FPREGS+((F20-F0)*REGSZ_FP), a0) diff --git a/libc/arch-mips64/bionic/sigsetjmp.S b/libc/arch-mips64/bionic/sigsetjmp.S index b05454c28..9d2e5ea87 100644 --- a/libc/arch-mips64/bionic/sigsetjmp.S +++ b/libc/arch-mips64/bionic/sigsetjmp.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include #include #include diff --git a/libc/arch-mips64/bionic/syscall.S b/libc/arch-mips64/bionic/syscall.S index 08aa7051a..c4fd00995 100644 --- a/libc/arch-mips64/bionic/syscall.S +++ b/libc/arch-mips64/bionic/syscall.S @@ -26,8 +26,7 @@ * SUCH DAMAGE. */ -#include -#include +#include #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32) FRAMESZ = MKFSIZ(6,0) diff --git a/libc/arch-mips64/bionic/vfork.S b/libc/arch-mips64/bionic/vfork.S index c93694586..911a264f2 100644 --- a/libc/arch-mips64/bionic/vfork.S +++ b/libc/arch-mips64/bionic/vfork.S @@ -26,8 +26,7 @@ * SUCH DAMAGE. */ -#include -#include +#include #include // TODO: mips' uapi signal.h is missing #ifndef __ASSEMBLY__. @@ -46,7 +45,7 @@ LEAF(vfork,FRAMESZ) #if FRAMESZ!=0 PTR_SUBU sp, FRAMESZ #endif - SETUP_GP64(a5,vfork) + SETUP_GP64(a5, vfork) LI a0, (CLONE_VM | CLONE_VFORK | SIGCHLD) move a1, $0 move a2, $0 diff --git a/libc/arch-mips64/include/machine/asm.h b/libc/arch-mips64/include/machine/asm.h index eabb1bf4c..5eacde3df 100644 --- a/libc/arch-mips64/include/machine/asm.h +++ b/libc/arch-mips64/include/machine/asm.h @@ -28,25 +28,24 @@ #ifndef _MIPS64_ASM_H #define _MIPS64_ASM_H -#include - -#ifdef NEED_OLD_RM7KFIX -#define ITLBNOPFIX nop;nop;nop;nop;nop;nop;nop;nop;nop;nop; -#else -#define ITLBNOPFIX nop;nop;nop;nop +#ifndef _ALIGN_TEXT +# define _ALIGN_TEXT .align 4 #endif +#undef __bionic_asm_custom_entry +#undef __bionic_asm_custom_end +#define __bionic_asm_custom_entry(f) .ent f +#define __bionic_asm_custom_end(f) .end f + +#include + #define _MIPS_ISA_MIPS1 1 /* R2000/R3000 */ #define _MIPS_ISA_MIPS2 2 /* R4000/R6000 */ #define _MIPS_ISA_MIPS3 3 /* R4000 */ #define _MIPS_ISA_MIPS4 4 /* TFP (R1x000) */ -#ifdef __linux__ #define _MIPS_ISA_MIPS5 5 #define _MIPS_ISA_MIPS32 6 #define _MIPS_ISA_MIPS64 7 -#else -#define _MIPS_ISA_MIPS32 32 /* MIPS32 */ -#endif #if !defined(ABICALLS) && !defined(_NO_ABICALLS) #define ABICALLS .abicalls @@ -56,8 +55,6 @@ ABICALLS #endif -#define _C_LABEL(x) x /* XXX Obsolete but keep for a while */ - #if !defined(__MIPSEL__) && !defined(__MIPSEB__) #error "__MIPSEL__ or __MIPSEB__ must be defined" #endif @@ -90,15 +87,6 @@ */ #if defined(ABICALLS) && !defined(_KERNEL) && !defined(_STANDALONE) -#ifndef _MIPS_SIM -#define _MIPS_SIM 1 -#define _ABIO32 1 -#endif -#ifndef _MIPS_ISA -#define _MIPS_ISA 2 -#define _MIPS_ISA_MIPS2 2 -#endif - #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32) #define NARGSAVE 4 @@ -189,28 +177,6 @@ #define PTR_VAL .dword #endif -/* - * Define -pg profile entry code. - */ -#if defined(XGPROF) || defined(XPROF) -#define MCOUNT \ - PTR_SUBU sp, sp, 64; \ - SAVE_GP(16); \ - sd ra, 56(sp); \ - sd gp, 48(sp); \ - .set noat; \ - .set noreorder; \ - move AT, ra; \ - jal _mcount; \ - PTR_SUBU sp, sp, 16; \ - ld ra, 56(sp); \ - PTR_ADDU sp, sp, 64; \ - .set reorder; \ - .set at; -#else -#define MCOUNT -#endif - /* * LEAF(x, fsize) * @@ -221,26 +187,9 @@ .globl x; \ .ent x, 0; \ x: ; \ + .cfi_startproc; \ .frame sp, fsize, ra; \ SETUP_GP \ - MCOUNT - -#define ALEAF(x) \ - .globl x; \ -x: - -/* - * NLEAF(x) - * - * Declare a non-profiled leaf routine. - */ -#define NLEAF(x, fsize) \ - .align 3; \ - .globl x; \ - .ent x, 0; \ -x: ; \ - .frame sp, fsize, ra; \ - SETUP_GP /* * NON_LEAF(x) @@ -252,54 +201,8 @@ x: ; \ .globl x; \ .ent x, 0; \ x: ; \ + .cfi_startproc; \ .frame sp, fsize, retpc; \ SETUP_GP \ - MCOUNT - -/* - * NNON_LEAF(x) - * - * Declare a non-profiled non-leaf routine - * (a routine that makes other C calls). - */ -#define NNON_LEAF(x, fsize, retpc) \ - .align 3; \ - .globl x; \ - .ent x, 0; \ -x: ; \ - .frame sp, fsize, retpc \ - SETUP_GP - -/* - * END(x) - * - * Mark end of a procedure. - */ -#define END(x) \ - .end x - -/* - * Macros to panic and printf from assembly language. - */ -#define PANIC(msg) \ - LA a0, 9f; \ - jal panic; \ - nop ; \ - MSG(msg) - -#define PRINTF(msg) \ - LA a0, 9f; \ - jal printf; \ - nop ; \ - MSG(msg) - -#define MSG(msg) \ - .rdata; \ -9: .asciiz msg; \ - .text - -#define ASMSTR(str) \ - .asciiz str; \ - .align 3 #endif /* !_MIPS_ASM_H */ diff --git a/libc/arch-mips64/include/machine/signal.h b/libc/arch-mips64/include/machine/signal.h index f02ec0d22..b31715cce 100644 --- a/libc/arch-mips64/include/machine/signal.h +++ b/libc/arch-mips64/include/machine/signal.h @@ -37,8 +37,6 @@ #ifndef _MIPS_SIGNAL_H_ #define _MIPS_SIGNAL_H_ -#include - #define SC_REGMASK (0*REGSZ) #define SC_STATUS (1*REGSZ) #define SC_PC (2*REGSZ) diff --git a/libc/arch-mips64/string/memcpy.S b/libc/arch-mips64/string/memcpy.S index aabdfcfdc..dc91096bd 100644 --- a/libc/arch-mips64/string/memcpy.S +++ b/libc/arch-mips64/string/memcpy.S @@ -39,13 +39,13 @@ * Include files ************************************************************************/ -#include "machine/asm.h" +#include -/* +/* * This routine could be optimized for MIPS64. The current code only * uses MIPS32 instructions. - */ + */ #if defined(__MIPSEB__) # define LWHI lwl /* high part is left in big-endian */ # define SWHI swl /* high part is left in big-endian */ diff --git a/libc/arch-mips64/string/memset.S b/libc/arch-mips64/string/memset.S index a1c5055c4..3e630caf8 100644 --- a/libc/arch-mips64/string/memset.S +++ b/libc/arch-mips64/string/memset.S @@ -39,12 +39,12 @@ * Include files ************************************************************************/ -#include "machine/asm.h" +#include -/* +/* * This routine could be optimized for MIPS64. The current code only * uses MIPS32 instructions. - */ + */ #if defined(__MIPSEB__) # define SWHI swl /* high part is left in big-endian */ @@ -220,7 +220,7 @@ LEAF(memset,0) sw a1,-36(a0) nop nop # the extra nop instructions help to balance - nop # cycles needed for "store" + "fill" + "evict" + nop # cycles needed for "store" + "fill" + "evict" nop # For 64byte store there are needed 8 fill nop # and 8 evict cycles, i.e. at least 32 instr. nop @@ -320,4 +320,3 @@ END(memset) /************************************************************************ * Implementation : Static functions ************************************************************************/ - diff --git a/libc/arch-x86/bionic/__bionic_clone.S b/libc/arch-x86/bionic/__bionic_clone.S index 3823ecc17..e6ddaaad4 100644 --- a/libc/arch-x86/bionic/__bionic_clone.S +++ b/libc/arch-x86/bionic/__bionic_clone.S @@ -1,5 +1,4 @@ -#include -#include +#include // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg); ENTRY(__bionic_clone) diff --git a/libc/arch-x86/bionic/__get_sp.S b/libc/arch-x86/bionic/__get_sp.S index 0739d7983..31ec6bc34 100644 --- a/libc/arch-x86/bionic/__get_sp.S +++ b/libc/arch-x86/bionic/__get_sp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(__get_sp) mov %esp, %eax diff --git a/libc/arch-x86/bionic/_setjmp.S b/libc/arch-x86/bionic/_setjmp.S index 9221138b8..0b256a2ad 100644 --- a/libc/arch-x86/bionic/_setjmp.S +++ b/libc/arch-x86/bionic/_setjmp.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include /* * C library -- _setjmp, _longjmp diff --git a/libc/arch-x86/bionic/setjmp.S b/libc/arch-x86/bionic/setjmp.S index e149d425b..5b943118c 100644 --- a/libc/arch-x86/bionic/setjmp.S +++ b/libc/arch-x86/bionic/setjmp.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include /* * C library -- setjmp, longjmp diff --git a/libc/arch-x86/bionic/sigsetjmp.S b/libc/arch-x86/bionic/sigsetjmp.S index 69494b413..7ef732ef2 100644 --- a/libc/arch-x86/bionic/sigsetjmp.S +++ b/libc/arch-x86/bionic/sigsetjmp.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(sigsetjmp) movl 4(%esp),%ecx diff --git a/libc/arch-x86/include/machine/asm.h b/libc/arch-x86/include/machine/asm.h index 5ccf78f13..913e6c840 100644 --- a/libc/arch-x86/include/machine/asm.h +++ b/libc/arch-x86/include/machine/asm.h @@ -37,10 +37,6 @@ #ifndef _I386_ASM_H_ #define _I386_ASM_H_ -#ifdef _KERNEL_OPT -#include "opt_multiprocessor.h" -#endif - #ifdef PIC #define PIC_PROLOGUE \ pushl %ebx; \ @@ -61,27 +57,6 @@ #define PIC_GOTOFF(x) x #endif -#ifdef __ELF__ -# define _C_LABEL(x) x -#else -# ifdef __STDC__ -# define _C_LABEL(x) _ ## x -# else -# define _C_LABEL(x) _/**/x -# endif -#endif -#define _ASM_LABEL(x) x - -#define CVAROFF(x, y) _C_LABEL(x) + y - -#ifdef __STDC__ -# define __CONCAT(x,y) x ## y -# define __STRING(x) #x -#else -# define __CONCAT(x,y) x/**/y -# define __STRING(x) "x" -#endif - /* let kernels and others override entrypoint alignment */ #if !defined(_ALIGN_TEXT) && !defined(_KERNEL) # ifdef _STANDALONE @@ -93,126 +68,4 @@ # endif #endif -#define _ENTRY(x) \ - .text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc; -#define _LABEL(x) \ - .globl x; x: - -#ifdef _KERNEL - -#define CPUVAR(off) %fs:__CONCAT(CPU_INFO_,off) - -/* XXX Can't use __CONCAT() here, as it would be evaluated incorrectly. */ -#ifdef __ELF__ -#ifdef __STDC__ -#define IDTVEC(name) \ - ALIGN_TEXT; .globl X ## name; .type X ## name,@function; X ## name: -#define IDTVEC_END(name) \ - .size X ## name, . - X ## name -#else -#define IDTVEC(name) \ - ALIGN_TEXT; .globl X/**/name; .type X/**/name,@function; X/**/name: -#define IDTVEC_END(name) \ - .size X/**/name, . - X/**/name -#endif /* __STDC__ */ -#else -#ifdef __STDC__ -#define IDTVEC(name) \ - ALIGN_TEXT; .globl _X ## name; .type _X ## name,@function; _X ## name: -#define IDTVEC_END(name) \ - .size _X ## name, . - _X ## name -#else -#define IDTVEC(name) \ - ALIGN_TEXT; .globl _X/**/name; .type _X/**/name,@function; _X/**/name: -#define IDTVEC_END(name) \ - .size _X/**/name, . - _X/**/name -#endif /* __STDC__ */ -#endif /* __ELF__ */ - -#ifdef _STANDALONE -#define ALIGN_DATA .align 4 -#define ALIGN_TEXT .align 4 /* 4-byte boundaries */ -#define SUPERALIGN_TEXT .align 16 /* 15-byte boundaries */ -#elif defined __ELF__ -#define ALIGN_DATA .align 4 -#define ALIGN_TEXT .align 16 /* 16-byte boundaries */ -#define SUPERALIGN_TEXT .align 16 /* 16-byte boundaries */ -#else -#define ALIGN_DATA .align 2 -#define ALIGN_TEXT .align 4 /* 16-byte boundaries */ -#define SUPERALIGN_TEXT .align 4 /* 16-byte boundaries */ -#endif /* __ELF__ */ - -#define _ALIGN_TEXT ALIGN_TEXT - -#ifdef GPROF -#ifdef __ELF__ -#define MCOUNT_ASM call _C_LABEL(__mcount) -#else /* __ELF__ */ -#define MCOUNT_ASM call _C_LABEL(mcount) -#endif /* __ELF__ */ -#else /* GPROF */ -#define MCOUNT_ASM /* nothing */ -#endif /* GPROF */ - -#endif /* _KERNEL */ - - - -#ifdef GPROF -# ifdef __ELF__ -# define _PROF_PROLOGUE \ - pushl %ebp; movl %esp,%ebp; call PIC_PLT(__mcount); popl %ebp -# else -# define _PROF_PROLOGUE \ - pushl %ebp; movl %esp,%ebp; call PIC_PLT(mcount); popl %ebp -# endif -#else -# define _PROF_PROLOGUE -#endif - -#define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE -#define NENTRY(y) _ENTRY(_C_LABEL(y)) -#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE -#define LABEL(y) _LABEL(_C_LABEL(y)) -#define END(y) .cfi_endproc; .size y, . - y - -#define ASMSTR .asciz - -#ifdef __ELF__ -#define RCSID(x) .pushsection ".ident"; .asciz x; .popsection -#else -#define RCSID(x) .text; .asciz x -#endif - -#ifdef NO_KERNEL_RCSIDS -#define __KERNEL_RCSID(_n, _s) /* nothing */ -#else -#define __KERNEL_RCSID(_n, _s) RCSID(_s) -#endif - -#ifdef __ELF__ -#define WEAK_ALIAS(alias,sym) \ - .weak alias; \ - alias = sym -#endif -/* - * STRONG_ALIAS: create a strong alias. - */ -#define STRONG_ALIAS(alias,sym) \ - .globl alias; \ - alias = sym - -#ifdef __STDC__ -#define WARN_REFERENCES(sym,msg) \ - .pushsection .gnu.warning. ## sym; \ - .ascii msg; \ - .popsection -#else -#define WARN_REFERENCES(sym,msg) \ - .pushsection .gnu.warning./**/sym; \ - .ascii msg; \ - .popsection -#endif /* __STDC__ */ - #endif /* !_I386_ASM_H_ */ diff --git a/libc/arch-x86/string/bcopy.S b/libc/arch-x86/string/bcopy.S index 40df1d026..f425c589e 100644 --- a/libc/arch-x86/string/bcopy.S +++ b/libc/arch-x86/string/bcopy.S @@ -31,7 +31,7 @@ * SUCH DAMAGE. */ -#include +#include /* * (ov)bcopy (src,dst,cnt) diff --git a/libc/arch-x86/string/memcmp.S b/libc/arch-x86/string/memcmp.S index 3b5053024..ef36b4f29 100644 --- a/libc/arch-x86/string/memcmp.S +++ b/libc/arch-x86/string/memcmp.S @@ -4,7 +4,7 @@ * Public domain. */ -#include +#include ENTRY(memcmp) pushl %edi diff --git a/libc/arch-x86/string/strcat.S b/libc/arch-x86/string/strcat.S index c75f38a54..49e8eeedd 100644 --- a/libc/arch-x86/string/strcat.S +++ b/libc/arch-x86/string/strcat.S @@ -4,7 +4,7 @@ * Public domain. */ -#include +#include #if defined(APIWARN) #APP diff --git a/libc/arch-x86/string/strcmp.S b/libc/arch-x86/string/strcmp.S index 5d3f4fc26..580f4d5a6 100644 --- a/libc/arch-x86/string/strcmp.S +++ b/libc/arch-x86/string/strcmp.S @@ -4,7 +4,7 @@ * Public domain. */ -#include +#include /* * NOTE: I've unrolled the loop eight times: large enough to make a diff --git a/libc/arch-x86/string/strncmp.S b/libc/arch-x86/string/strncmp.S index 664947328..9ba83a13b 100644 --- a/libc/arch-x86/string/strncmp.S +++ b/libc/arch-x86/string/strncmp.S @@ -4,7 +4,7 @@ * Public domain. */ -#include +#include /* * NOTE: I've unrolled the loop eight times: large enough to make a diff --git a/libc/arch-x86/string/swab.S b/libc/arch-x86/string/swab.S index 2f6cfb2a2..b44d13413 100644 --- a/libc/arch-x86/string/swab.S +++ b/libc/arch-x86/string/swab.S @@ -4,7 +4,7 @@ * Public domain. */ -#include +#include /* * On the i486, this code is negligibly faster than the code generated diff --git a/libc/arch-x86_64/bionic/__bionic_clone.S b/libc/arch-x86_64/bionic/__bionic_clone.S index 769201343..cf98d7661 100644 --- a/libc/arch-x86_64/bionic/__bionic_clone.S +++ b/libc/arch-x86_64/bionic/__bionic_clone.S @@ -26,8 +26,7 @@ * SUCH DAMAGE. */ -#include -#include +#include // pid_t __bionic_clone(int flags, void* child_stack, pid_t* parent_tid, void* tls, pid_t* child_tid, int (*fn)(void*), void* arg); ENTRY(__bionic_clone) diff --git a/libc/arch-x86_64/bionic/__get_sp.S b/libc/arch-x86_64/bionic/__get_sp.S index 0c693b3ed..9cc18a962 100644 --- a/libc/arch-x86_64/bionic/__get_sp.S +++ b/libc/arch-x86_64/bionic/__get_sp.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(__get_sp) mov %rsp, %rax diff --git a/libc/arch-x86_64/bionic/__rt_sigreturn.S b/libc/arch-x86_64/bionic/__rt_sigreturn.S index e03bb88d3..eddceb15b 100644 --- a/libc/arch-x86_64/bionic/__rt_sigreturn.S +++ b/libc/arch-x86_64/bionic/__rt_sigreturn.S @@ -26,11 +26,9 @@ * SUCH DAMAGE. */ -#include -#include +#include -ENTRY(__rt_sigreturn) - .hidden _C_LABEL(__rt_sigreturn) // TODO: add an ENTRY_PRIVATE macro for x86_64. +ENTRY_PRIVATE(__rt_sigreturn) movl $__NR_rt_sigreturn, %eax syscall END(__rt_sigreturn) diff --git a/libc/arch-x86_64/bionic/_setjmp.S b/libc/arch-x86_64/bionic/_setjmp.S index e9b8dbbd5..c61703061 100644 --- a/libc/arch-x86_64/bionic/_setjmp.S +++ b/libc/arch-x86_64/bionic/_setjmp.S @@ -36,8 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ - -#include +#include #include /* diff --git a/libc/arch-x86_64/bionic/setjmp.S b/libc/arch-x86_64/bionic/setjmp.S index 3f4a43204..c81b5734c 100644 --- a/libc/arch-x86_64/bionic/setjmp.S +++ b/libc/arch-x86_64/bionic/setjmp.S @@ -36,8 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ - -#include +#include #include /* diff --git a/libc/arch-x86_64/bionic/sigsetjmp.S b/libc/arch-x86_64/bionic/sigsetjmp.S index 174222f38..718743f94 100644 --- a/libc/arch-x86_64/bionic/sigsetjmp.S +++ b/libc/arch-x86_64/bionic/sigsetjmp.S @@ -37,7 +37,7 @@ */ -#include +#include #include /* diff --git a/libc/arch-x86_64/include/machine/asm.h b/libc/arch-x86_64/include/machine/asm.h index 310b23000..0af6dae46 100644 --- a/libc/arch-x86_64/include/machine/asm.h +++ b/libc/arch-x86_64/include/machine/asm.h @@ -37,8 +37,6 @@ #ifndef _AMD64_ASM_H_ #define _AMD64_ASM_H_ -#ifdef __x86_64__ - #ifdef __PIC__ #define PIC_PLT(x) x@PLT #define PIC_GOT(x) x@GOTPCREL(%rip) @@ -47,19 +45,6 @@ #define PIC_GOT(x) x #endif -# define _C_LABEL(x) x -#define _ASM_LABEL(x) x - -#define CVAROFF(x,y) (_C_LABEL(x)+y)(%rip) - -#ifdef __STDC__ -# define __CONCAT(x,y) x ## y -# define __STRING(x) #x -#else -# define __CONCAT(x,y) x/**/y -# define __STRING(x) "x" -#endif - /* let kernels and others override entrypoint alignment */ #ifndef _ALIGN_TEXT # ifdef _STANDALONE @@ -69,78 +54,4 @@ # endif #endif -#define _ENTRY(x) \ - .text; _ALIGN_TEXT; .globl x; .type x,@function; x: .cfi_startproc; -#define _LABEL(x) \ - .globl x; x: - -#ifdef _KERNEL -/* XXX Can't use __CONCAT() here, as it would be evaluated incorrectly. */ -#ifdef __STDC__ -#define IDTVEC(name) \ - ALIGN_TEXT; .globl X ## name; .type X ## name,@function; X ## name: -#define IDTVEC_END(name) \ - .size X ## name, . - X ## name -#else -#define IDTVEC(name) \ - ALIGN_TEXT; .globl X/**/name; .type X/**/name,@function; X/**/name: -#define IDTVEC_END(name) \ - .size X/**/name, . - X/**/name -#endif /* __STDC__ */ -#endif /* _KERNEL */ - -#ifdef __STDC__ -#define CPUVAR(off) %gs:CPU_INFO_ ## off -#else -#define CPUVAR(off) %gs:CPU_INFO_/**/off -#endif - - -#ifdef GPROF -# define _PROF_PROLOGUE \ - pushq %rbp; leaq (%rsp),%rbp; call PIC_PLT(__mcount); popq %rbp -#else -# define _PROF_PROLOGUE -#endif - -#define ENTRY(y) _ENTRY(_C_LABEL(y)); _PROF_PROLOGUE -#define NENTRY(y) _ENTRY(_C_LABEL(y)) -#define ALTENTRY(x) NENTRY(x) -#define ASENTRY(y) _ENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE -#define LABEL(y) _LABEL(_C_LABEL(y)) -#define END(y) .cfi_endproc; .size y, . - y - -#define ASMSTR .asciz - -#define RCSID(x) .pushsection ".ident"; .asciz x; .popsection - -#define WEAK_ALIAS(alias,sym) \ - .weak alias; \ - alias = sym - -/* - * STRONG_ALIAS: create a strong alias. - */ -#define STRONG_ALIAS(alias,sym) \ - .globl alias; \ - alias = sym - -#ifdef __STDC__ -#define WARN_REFERENCES(sym,msg) \ - .pushsection .gnu.warning. ## sym; \ - .ascii msg; \ - .popsection -#else -#define WARN_REFERENCES(sym,msg) \ - .pushsection .gnu.warning./**/sym; \ - .ascii msg; \ - .popsection -#endif /* __STDC__ */ - -#else /* __x86_64__ */ - -#include - -#endif /* __x86_64__ */ - #endif /* !_AMD64_ASM_H_ */ diff --git a/libc/private/bionic_asm.h b/libc/private/bionic_asm.h index be22b75d0..7c2686f38 100644 --- a/libc/private/bionic_asm.h +++ b/libc/private/bionic_asm.h @@ -29,20 +29,32 @@ #ifndef _PRIVATE_BIONIC_ASM_H_ #define _PRIVATE_BIONIC_ASM_H_ -#include - #include /* For system call numbers. */ #define MAX_ERRNO 4095 /* For recognizing system call error returns. */ -#if __mips__ -/* mips/mips64 don't have ENTRY like the others. */ -#define ENTRY(f) .text; .globl f; .align 4; .type f, @function; .ent f; f: .cfi_startproc -/* mips/mips64 do have END, but we want a better one, more like the others. */ -#undef END -#define END(f) .cfi_endproc; .size f, .-f; .end f -#endif +#define __bionic_asm_custom_entry(f) +#define __bionic_asm_custom_end(f) +#define __bionic_asm_function_type @function -/* TODO: add ENTRY_PRIVATE. */ -/* TODO: add ASM_ALIAS macro. */ +#include + +#define ENTRY(f) \ + .text; \ + .globl f; \ + _ALIGN_TEXT; \ + .type f, __bionic_asm_function_type; \ + f: \ + __bionic_asm_custom_entry(f); \ + .cfi_startproc \ + +#define END(f) \ + .cfi_endproc; \ + .size f, .-f; \ + __bionic_asm_custom_end(f) \ + +/* Like ENTRY, but with hidden visibility. */ +#define ENTRY_PRIVATE(f) \ + ENTRY(f); \ + .hidden f \ #endif /* _PRIVATE_BIONIC_ASM_H_ */ diff --git a/linker/arch/arm64/begin.S b/linker/arch/arm64/begin.S index 55618b7f3..c96ede787 100644 --- a/linker/arch/arm64/begin.S +++ b/linker/arch/arm64/begin.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(_start) mov x0, sp diff --git a/linker/arch/mips64/begin.S b/linker/arch/mips64/begin.S index 9a85925cf..9e741c022 100644 --- a/linker/arch/mips64/begin.S +++ b/linker/arch/mips64/begin.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include #if (_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABI32) #define ELF_DYNSZ 8 diff --git a/linker/arch/x86_64/begin.S b/linker/arch/x86_64/begin.S index 9ecad1aee..aff46600d 100644 --- a/linker/arch/x86_64/begin.S +++ b/linker/arch/x86_64/begin.S @@ -26,7 +26,7 @@ * SUCH DAMAGE. */ -#include +#include ENTRY(_start) /* Pass elfdata to __linker_init. */