summaryrefslogtreecommitdiffstats
path: root/contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S')
-rw-r--r--contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S37
1 files changed, 37 insertions, 0 deletions
diff --git a/contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S b/contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S
new file mode 100644
index 0000000..f7612a8
--- /dev/null
+++ b/contrib/netbsd-tests/lib/csu/arch/ia64/h_initfini_align.S
@@ -0,0 +1,37 @@
+/* $NetBSD: h_initfini_align.S,v 1.2 2014/03/16 09:27:04 cherry Exp $ */
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.2 2014/03/16 09:27:04 cherry Exp $")
+
+ENTRY(check_stack_alignment, 0)
+ .prologue
+ .regstk 0, 2, 0, 0
+
+ alloc loc0 = ar.pfs, 0, 2, 0, 0
+
+ .body
+ mov ret0 = 1
+ ;;
+
+ /* ar.bsp has an 8-byte alignment requirement */
+ mov loc1 = ar.bsp
+ ;;
+
+ and loc1 = 7, loc1
+ ;;
+
+ cmp.eq p1, p0 = 0, loc1
+ (p0) mov ret0 = 0
+ ;;
+
+ /* sp has a 16-byte alignment requirement */
+ (p1) mov loc1 = sp
+ ;;
+ (p1) and loc1 = 15, loc1
+ ;;
+
+ (p1) cmp.eq p1, p0 = 0, loc1
+ (p0) mov ret0 = 0
+
+ br.ret.sptk.few rp
OpenPOWER on IntegriCloud