In asm.h ensure NENTRY uses the old-school nop-sled align, but change standard
authorderaadt <deraadt@openbsd.org>
Tue, 10 Jul 2018 16:01:26 +0000 (16:01 +0000)
committerderaadt <deraadt@openbsd.org>
Tue, 10 Jul 2018 16:01:26 +0000 (16:01 +0000)
ENTRY is a trapsled.  Fix a few functions which fall-through into an ENTRY
macro. amd64 binaries now are free of double+-nop sequences (except for one
assember nit in aes-586.pl).  Previous changes by guenther got us here.
ok mortimer kettenis

lib/libc/arch/amd64/string/memmove.S
sys/arch/amd64/amd64/locore.S
sys/arch/amd64/amd64/locore0.S
sys/arch/amd64/amd64/spl.S
sys/arch/amd64/amd64/vector.S
sys/arch/amd64/include/asm.h
sys/lib/libkern/arch/amd64/htonl.S
sys/lib/libkern/arch/amd64/htons.S
sys/lib/libkern/arch/amd64/memmove.S

index 496a0a3..9df41af 100644 (file)
@@ -44,7 +44,7 @@ ENTRY(bcopy)
        xchgq   %rdi,%rsi
        /* fall into memmove */
 
-ENTRY(memmove)
+NENTRY(memmove)
        RETGUARD_SETUP(memmove, r10)
        movq    %rdi,%r11       /* save dest */
        movq    %rdx,%rcx
index b1f85ab..05ec5fb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: locore.S,v 1.103 2018/07/03 23:21:15 mortimer Exp $   */
+/*     $OpenBSD: locore.S,v 1.104 2018/07/10 16:01:26 deraadt Exp $    */
 /*     $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $     */
 
 /*
  * override user-land alignment before including asm.h
  */
 #define        ALIGN_DATA      .align  8,0xcc
-#define ALIGN_TEXT     .align 16,0x90
-#define _ALIGN_TEXT    ALIGN_TEXT
 
 #include <machine/asm.h>
 
index 662b58f..67f6f75 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: locore0.S,v 1.8 2018/05/22 15:55:30 guenther Exp $    */
+/*     $OpenBSD: locore0.S,v 1.9 2018/07/10 16:01:26 deraadt Exp $     */
 /*     $NetBSD: locore.S,v 1.13 2004/03/25 18:33:17 drochner Exp $     */
 
 /*
  * override user-land alignment before including asm.h
  */
 #define        ALIGN_DATA      .align  8,0xcc
-#define ALIGN_TEXT     .align 16,0x90
-#define _ALIGN_TEXT    ALIGN_TEXT
 
 #include <machine/asm.h>
 
index 063dbe7..c478255 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: spl.S,v 1.16 2018/07/03 23:21:15 mortimer Exp $       */
+/*     $OpenBSD: spl.S,v 1.17 2018/07/10 16:01:26 deraadt Exp $        */
 /*     $NetBSD: spl.S,v 1.3 2004/06/28 09:13:11 fvdl Exp $     */
 
 /*
@@ -65,8 +65,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define ALIGN_TEXT     .align 16,0x90
-
 #include <machine/asm.h>
 #include <machine/psl.h>
 #include <machine/trap.h>
index d9c42d5..0dc7f2e 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: vector.S,v 1.70 2018/07/10 08:57:44 guenther Exp $    */
+/*     $OpenBSD: vector.S,v 1.71 2018/07/10 16:01:26 deraadt Exp $     */
 /*     $NetBSD: vector.S,v 1.5 2004/06/28 09:13:11 fvdl Exp $  */
 
 /*
@@ -65,8 +65,6 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define ALIGN_TEXT     .align 16,0x90
-
 #include <machine/param.h>
 #include <machine/i8259.h>
 #include <machine/i82093reg.h>
index 110beb7..0ef1175 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: asm.h,v 1.13 2018/07/01 16:02:12 guenther Exp $       */
+/*     $OpenBSD: asm.h,v 1.14 2018/07/10 16:01:26 deraadt Exp $        */
 /*     $NetBSD: asm.h,v 1.2 2003/05/02 18:05:47 yamt Exp $     */
 
 /*-
@@ -66,6 +66,8 @@
 #define _ALIGN_TRAPS   .align  16, 0xcc
 
 #define _ENTRY(x) \
+       .text; _ALIGN_TRAPS; .globl x; .type x,@function; x:
+#define _NENTRY(x) \
        .text; _ALIGN_TEXT; .globl x; .type x,@function; x:
 
 #ifdef _KERNEL
 #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        NENTRY(y)       _NENTRY(_C_LABEL(y))
+#define        ASENTRY(y)      _NENTRY(_ASM_LABEL(y)); _PROF_PROLOGUE
 #define        END(y)          .size y, . - y
 
 #define        STRONG_ALIAS(alias,sym)                                         \
index f7d6405..07965cd 100644 (file)
@@ -41,8 +41,8 @@
 #include <machine/asm.h>
 
 _ENTRY(_C_LABEL(htonl))
-_ENTRY(_C_LABEL(ntohl))
-_ENTRY(_C_LABEL(bswap32))
+_NENTRY(_C_LABEL(ntohl))
+_NENTRY(_C_LABEL(bswap32))
 _PROF_PROLOGUE
        RETGUARD_SETUP(htonl, r11)
        movl    %edi,%eax
index 15016f5..3a70259 100644 (file)
@@ -41,8 +41,8 @@
 #include <machine/asm.h>
 
 _ENTRY(_C_LABEL(htons))
-_ENTRY(_C_LABEL(ntohs))
-_ENTRY(_C_LABEL(bswap16))
+_NENTRY(_C_LABEL(ntohs))
+_NENTRY(_C_LABEL(bswap16))
 _PROF_PROLOGUE
        RETGUARD_SETUP(htons, r11)
        movl    %edi,%eax
index 3a0bed8..71d5b00 100644 (file)
@@ -44,7 +44,7 @@ ENTRY(bcopy)
        xchgq   %rdi,%rsi
        /* fall into memmove */
 
-ENTRY(memmove)
+NENTRY(memmove)
        RETGUARD_SETUP(memmove, r10)
        movq    %rdi,%r11       /* save dest */
        movq    %rdx,%rcx