svn commit: r320136 - head/lib/libc/aarch64/gen

Jason Evans jasone at FreeBSD.org
Tue Jun 20 07:25:39 UTC 2017


Author: jasone
Date: Tue Jun 20 07:25:38 2017
New Revision: 320136
URL: https://svnweb.freebsd.org/changeset/base/320136

Log:
  Decrease relative branch brittleness.
  
  Replace conditional branches with trampolines to unconditional branches when
  jumping to labels within other compilation units.  This increases the offset
  range from +-1 MiB to +-128 MiB.

Modified:
  head/lib/libc/aarch64/gen/sigsetjmp.S

Modified: head/lib/libc/aarch64/gen/sigsetjmp.S
==============================================================================
--- head/lib/libc/aarch64/gen/sigsetjmp.S	Tue Jun 20 06:20:09 2017	(r320135)
+++ head/lib/libc/aarch64/gen/sigsetjmp.S	Tue Jun 20 07:25:38 2017	(r320136)
@@ -34,8 +34,10 @@ __FBSDID("$FreeBSD$");
 
 ENTRY(sigsetjmp)
 	cmp	x1, #0
-	b.eq	_C_LABEL(_setjmp)
+	b.eq	1f
 	b	_C_LABEL(setjmp)
+1:
+	b	_C_LABEL(_setjmp)
 END(sigsetjmp)
 
 ENTRY(siglongjmp)
@@ -45,8 +47,10 @@ ENTRY(siglongjmp)
 
 	/* Check the magic */
 	cmp	x2, x3
-	b.eq	_C_LABEL(_longjmp)
+	b.eq	1f
 	b	_C_LABEL(longjmp)
+1:
+	b	_C_LABEL(_longjmp)
 	.align	3
 .Lmagic:
 	.quad	_JB_MAGIC__SETJMP


More information about the svn-src-head mailing list