Module Name:    src
Committed By:   matt
Date:           Wed Dec 11 17:31:56 UTC 2013

Modified Files:
        src/tests/lib/csu: Makefile.check_stack
Added Files:
        src/tests/lib/csu/arch/alpha: h_initfini_align.S
        src/tests/lib/csu/arch/arm: h_initfini_align.S
        src/tests/lib/csu/arch/mips: h_initfini_align.S
        src/tests/lib/csu/arch/powerpc: h_initfini_align.S
        src/tests/lib/csu/arch/vax: h_initfini_align.S

Log Message:
Add stack alignment checks for alpha, arm, mips, powerpc, and vax.
Fix makefile to support MACHINE_CPU


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/tests/lib/csu/Makefile.check_stack
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/alpha/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/arm/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/mips/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/powerpc/h_initfini_align.S
cvs rdiff -u -r0 -r1.1 src/tests/lib/csu/arch/vax/h_initfini_align.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/lib/csu/Makefile.check_stack
diff -u src/tests/lib/csu/Makefile.check_stack:1.1 src/tests/lib/csu/Makefile.check_stack:1.2
--- src/tests/lib/csu/Makefile.check_stack:1.1	Tue Nov 30 18:38:53 2010
+++ src/tests/lib/csu/Makefile.check_stack	Wed Dec 11 17:31:55 2013
@@ -1,9 +1,14 @@
-# $NetBSD: Makefile.check_stack,v 1.1 2010/11/30 18:38:53 joerg Exp $
+# $NetBSD: Makefile.check_stack,v 1.2 2013/12/11 17:31:55 matt Exp $
 
 .include <bsd.own.mk>
 
+.if exists(${.PARSEDIR}/arch/${MACHINE_ARCH})
 CSU_ARCHDIR=	${.PARSEDIR}/arch/${MACHINE_ARCH}
 .PATH: ${CSU_ARCHDIR}
+.elif exists(${.PARSEDIR}/arch/${MACHINE_CPU})
+CSU_ARCHDIR=	${.PARSEDIR}/arch/${MACHINE_CPU}
+.PATH: ${CSU_ARCHDIR}
+.endif
 .if exists(${CSU_ARCHDIR}/h_initfini_align.S)
 SRCS_CHECK_STACK=	h_initfini_align.S
 CPPFLAGS_CHECK_STACK+=	-DCHECK_STACK_ALIGNMENT

Added files:

Index: src/tests/lib/csu/arch/alpha/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/alpha/h_initfini_align.S:1.1
--- /dev/null	Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/alpha/h_initfini_align.S	Wed Dec 11 17:31:55 2013
@@ -0,0 +1,16 @@
+/*	$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:55 matt Exp $	*/
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:55 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+LEAF_NOPROFILE(check_stack_alignment, 0)
+	ldiq	v0, 0
+	and	sp, 7, t0
+	cmoveq	t0, 1, v0
+	ret
+END(check_stack_alignment)

Index: src/tests/lib/csu/arch/arm/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/arm/h_initfini_align.S:1.1
--- /dev/null	Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/arm/h_initfini_align.S	Wed Dec 11 17:31:56 2013
@@ -0,0 +1,20 @@
+/*	$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $	*/
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+ARM_ENTRY(check_stack_alignment)
+#ifdef __ARM_EABI__
+	tst	sp, #7
+#else
+	tst	sp, #3
+#endif
+	movne	r0, #0
+	moveq	r0, #1
+	RET
+END(check_stack_alignment)

Index: src/tests/lib/csu/arch/mips/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/mips/h_initfini_align.S:1.1
--- /dev/null	Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/mips/h_initfini_align.S	Wed Dec 11 17:31:56 2013
@@ -0,0 +1,19 @@
+/*	$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $	*/
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+LEAF_NOPROFILE(check_stack_alignment)
+#ifdef __mips_o32
+	andi	v1,sp,3
+#else
+	andi	v1,sp,7
+#endif
+	sltiu	v0,v1,1
+	jr	ra
+END(check_stack_alignment)

Index: src/tests/lib/csu/arch/powerpc/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/powerpc/h_initfini_align.S:1.1
--- /dev/null	Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/powerpc/h_initfini_align.S	Wed Dec 11 17:31:56 2013
@@ -0,0 +1,17 @@
+/*	$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $	*/
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+_ENTRY(check_stack_alignment)
+	li	%r3,0
+	andis.	%r0,%r1,15
+	bnelr	%cr0
+	li	%r3,1
+	blr
+END(check_stack_alignment)

Index: src/tests/lib/csu/arch/vax/h_initfini_align.S
diff -u /dev/null src/tests/lib/csu/arch/vax/h_initfini_align.S:1.1
--- /dev/null	Wed Dec 11 17:31:56 2013
+++ src/tests/lib/csu/arch/vax/h_initfini_align.S	Wed Dec 11 17:31:56 2013
@@ -0,0 +1,17 @@
+/*	$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $	*/
+
+#include <machine/asm.h>
+
+RCSID("$NetBSD: h_initfini_align.S,v 1.1 2013/12/11 17:31:56 matt Exp $")
+
+/*
+ * LINTSTUB: bool check_stack_alignment(void);
+ */
+
+_ENTRY(check_stack_alignment, 0)
+	clrl	%r0
+	bitl	$3,%sp
+	bneq	1f
+	incl	%r0
+1:	ret
+END(check_stack_alignment)

Reply via email to