Module Name: src
Committed By: christos
Date: Tue Jan 24 20:03:38 UTC 2012
Modified Files:
src/sys/arch/alpha/include: param.h
src/sys/arch/amd64/include: param.h
src/sys/arch/arm/include: param.h
src/sys/arch/hppa/include: param.h
src/sys/arch/i386/include: param.h
src/sys/arch/ia64/include: param.h
src/sys/arch/m68k/include: param.h
src/sys/arch/mips/include: mips_param.h
src/sys/arch/powerpc/include: param.h
src/sys/arch/sh3/include: param.h
src/sys/arch/sparc/include: param.h
src/sys/arch/sparc64/include: param.h
src/sys/arch/vax/include: param.h
src/sys/kern: init_main.c kern_exec.c
src/sys/sys: param.h
Log Message:
Use and define ALIGN() ALIGN_POINTER() and STACK_ALIGN() consistently,
and avoid definining them in 10 different places if not needed.
To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/arch/alpha/include/param.h
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/amd64/include/param.h
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/arm/include/param.h
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/hppa/include/param.h
cvs rdiff -u -r1.73 -r1.74 src/sys/arch/i386/include/param.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/ia64/include/param.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/m68k/include/param.h
cvs rdiff -u -r1.31 -r1.32 src/sys/arch/mips/include/mips_param.h
cvs rdiff -u -r1.25 -r1.26 src/sys/arch/powerpc/include/param.h
cvs rdiff -u -r1.21 -r1.22 src/sys/arch/sh3/include/param.h
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/sparc/include/param.h
cvs rdiff -u -r1.46 -r1.47 src/sys/arch/sparc64/include/param.h
cvs rdiff -u -r1.59 -r1.60 src/sys/arch/vax/include/param.h
cvs rdiff -u -r1.438 -r1.439 src/sys/kern/init_main.c
cvs rdiff -u -r1.333 -r1.334 src/sys/kern/kern_exec.c
cvs rdiff -u -r1.399 -r1.400 src/sys/sys/param.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/alpha/include/param.h
diff -u src/sys/arch/alpha/include/param.h:1.39 src/sys/arch/alpha/include/param.h:1.40
--- src/sys/arch/alpha/include/param.h:1.39 Fri Jan 20 09:08:05 2012
+++ src/sys/arch/alpha/include/param.h Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.39 2012/01/20 14:08:05 joerg Exp $ */
+/* $NetBSD: param.h,v 1.40 2012/01/24 20:03:36 christos Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -49,21 +49,6 @@
#include <machine/cpu.h>
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for all
- * data types (int, long, ...). The result is u_long and must be cast to
- * any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#define NBPG (1 << ALPHA_PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte off. into pg */
#define PGSHIFT ALPHA_PGSHIFT /* LOG2(NBPG) */
Index: src/sys/arch/amd64/include/param.h
diff -u src/sys/arch/amd64/include/param.h:1.15 src/sys/arch/amd64/include/param.h:1.16
--- src/sys/arch/amd64/include/param.h:1.15 Fri Jan 20 09:08:05 2012
+++ src/sys/arch/amd64/include/param.h Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.15 2012/01/20 14:08:05 joerg Exp $ */
+/* $NetBSD: param.h,v 1.16 2012/01/24 20:03:36 christos Exp $ */
#ifdef __x86_64__
@@ -12,19 +12,6 @@
#define MACHINE_ARCH "x86_64"
#define MID_MACHINE MID_X86_64
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ALIGNBYTES)
#define ALIGNED_POINTER(p,t) 1
#define ALIGNBYTES32 (sizeof(int) - 1)
Index: src/sys/arch/arm/include/param.h
diff -u src/sys/arch/arm/include/param.h:1.14 src/sys/arch/arm/include/param.h:1.15
--- src/sys/arch/arm/include/param.h:1.14 Fri Jan 20 09:08:05 2012
+++ src/sys/arch/arm/include/param.h Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.14 2012/01/20 14:08:05 joerg Exp $ */
+/* $NetBSD: param.h,v 1.15 2012/01/24 20:03:36 christos Exp $ */
/*
* Copyright (c) 1994,1995 Mark Brinicombe.
@@ -79,23 +79,8 @@
#define MID_MACHINE MID_ARM6
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
/* ARM-specific macro to align a stack pointer (downwards). */
-#define STACKALIGNBYTES (8 - 1)
-#define STACKALIGN(p) ((u_int)(p) &~ STACKALIGNBYTES)
+#define STACK_ALIGNBYTES (8 - 1)
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define DEV_BSIZE (1 << DEV_BSHIFT)
Index: src/sys/arch/hppa/include/param.h
diff -u src/sys/arch/hppa/include/param.h:1.16 src/sys/arch/hppa/include/param.h:1.17
--- src/sys/arch/hppa/include/param.h:1.16 Fri Jan 20 09:08:05 2012
+++ src/sys/arch/hppa/include/param.h Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.16 2012/01/20 14:08:05 joerg Exp $ */
+/* $NetBSD: param.h,v 1.17 2012/01/24 20:03:36 christos Exp $ */
/* $OpenBSD: param.h,v 1.12 2001/07/06 02:07:41 provos Exp $ */
@@ -37,15 +37,6 @@
#define MACHINE_ARCH "hppa"
#define MID_MACHINE MID_HPPA
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for all
- * data types (int, long, ...). The result is u_int and must be cast to
- * any desired pointer type.
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t) - 1)) == 0)
-
#define PGSHIFT 12 /* LOG2(NBPG) */
#define NBPG (1 << PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte offset into page */
Index: src/sys/arch/i386/include/param.h
diff -u src/sys/arch/i386/include/param.h:1.73 src/sys/arch/i386/include/param.h:1.74
--- src/sys/arch/i386/include/param.h:1.73 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/i386/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.73 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.74 2012/01/24 20:03:37 christos Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -51,20 +51,6 @@
#define MACHINE_ARCH "i386"
#define MID_MACHINE MID_I386
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(u_long)(p) + ALIGNBYTES) &~ \
- ALIGNBYTES)
#define ALIGNED_POINTER(p,t) 1
#define PGSHIFT 12 /* LOG2(NBPG) */
Index: src/sys/arch/ia64/include/param.h
diff -u src/sys/arch/ia64/include/param.h:1.6 src/sys/arch/ia64/include/param.h:1.7
--- src/sys/arch/ia64/include/param.h:1.6 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/ia64/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.6 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.7 2012/01/24 20:03:37 christos Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
@@ -77,22 +77,6 @@
#endif
#define KSTACK_GUARD_PAGES 0 /* pages of kstack guard; 0 disables */
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#define ALIGNBYTES32 (sizeof(int) - 1)
#define ALIGN32(p) (((u_long)(p) + ALIGNBYTES32) &~ALIGNBYTES32)
Index: src/sys/arch/m68k/include/param.h
diff -u src/sys/arch/m68k/include/param.h:1.20 src/sys/arch/m68k/include/param.h:1.21
--- src/sys/arch/m68k/include/param.h:1.20 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/m68k/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.20 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.21 2012/01/24 20:03:37 christos Exp $ */
/*
* Copyright (c) 1988 University of Utah.
@@ -56,21 +56,6 @@
#define MACHINE "m68k"
#endif
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for all
- * data types (int, long, ...). The result is u_int and must be cast to
- * any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#define NBPG (1 << PGSHIFT) /* bytes/page */
#define PGOFSET (NBPG-1) /* byte offset into page */
Index: src/sys/arch/mips/include/mips_param.h
diff -u src/sys/arch/mips/include/mips_param.h:1.31 src/sys/arch/mips/include/mips_param.h:1.32
--- src/sys/arch/mips/include/mips_param.h:1.31 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/mips/include/mips_param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: mips_param.h,v 1.31 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: mips_param.h,v 1.32 2012/01/24 20:03:37 christos Exp $ */
#ifdef _KERNEL
#include <machine/cpu.h>
@@ -67,23 +67,6 @@
#define COHERENCY_UNIT 32 /* MIPS cachelines are usually 32 bytes */
#endif
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for all
- * data types (int, long, ...). The result is u_int and must be cast to
- * any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGNBYTES32 ALIGNBYTES
-#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) & ~ALIGNBYTES)
-#define ALIGN32(p) (((uintptr_t)(p) + ALIGNBYTES32) & ~ALIGNBYTES32)
-#define ALIGNED_POINTER(p,t) ((((uintptr_t)(p)) & (sizeof(t)-1)) == 0)
-
#ifdef ENABLE_MIPS_16KB_PAGE
#define NBPG 16384 /* bytes/page */
#define PGSHIFT 14 /* LOG2(NBPG) */
Index: src/sys/arch/powerpc/include/param.h
diff -u src/sys/arch/powerpc/include/param.h:1.25 src/sys/arch/powerpc/include/param.h:1.26
--- src/sys/arch/powerpc/include/param.h:1.25 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/powerpc/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.25 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.26 2012/01/24 20:03:37 christos Exp $ */
/*-
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -53,10 +53,6 @@
#define MACHINE_ARCH "powerpc"
#define MID_MACHINE MID_POWERPC
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) & ~ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#ifdef PPC_IBM4XX
#define PGSHIFT 14 /* Use 16KB to reduce TLB thrashing */
#define UPAGES 1
Index: src/sys/arch/sh3/include/param.h
diff -u src/sys/arch/sh3/include/param.h:1.21 src/sys/arch/sh3/include/param.h:1.22
--- src/sys/arch/sh3/include/param.h:1.21 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/sh3/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.21 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.22 2012/01/24 20:03:37 christos Exp $ */
/*-
* Copyright (c) 2002 The NetBSD Foundation, Inc. All rights reserved.
@@ -51,21 +51,6 @@
#define NBPG (1 << PGSHIFT)
#define PGOFSET (NBPG - 1)
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) & ~ALIGNBYTES)
-#define ALIGNED_POINTER(p, t) ((((u_long)(p)) & (sizeof(t) - 1)) == 0)
-
#define DEV_BSHIFT 9 /* log2(DEV_BSIZE) */
#define DEV_BSIZE (1 << DEV_BSHIFT)
#define BLKDEV_IOSIZE 2048
Index: src/sys/arch/sparc/include/param.h
diff -u src/sys/arch/sparc/include/param.h:1.68 src/sys/arch/sparc/include/param.h:1.69
--- src/sys/arch/sparc/include/param.h:1.68 Fri Jan 20 09:08:06 2012
+++ src/sys/arch/sparc/include/param.h Tue Jan 24 15:03:37 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.68 2012/01/20 14:08:06 joerg Exp $ */
+/* $NetBSD: param.h,v 1.69 2012/01/24 20:03:37 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -57,21 +57,6 @@
#endif /* XXX */
#endif /* XXX */
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for
- * the machine's strictest data type. The result is u_int and must be
- * cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) & ~ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#define SUN4_PGSHIFT 13 /* for a sun4 machine */
#define SUN4CM_PGSHIFT 12 /* for a sun4c or sun4m machine */
Index: src/sys/arch/sparc64/include/param.h
diff -u src/sys/arch/sparc64/include/param.h:1.46 src/sys/arch/sparc64/include/param.h:1.47
--- src/sys/arch/sparc64/include/param.h:1.46 Fri Jan 20 09:08:07 2012
+++ src/sys/arch/sparc64/include/param.h Tue Jan 24 15:03:38 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.46 2012/01/20 14:08:07 joerg Exp $ */
+/* $NetBSD: param.h,v 1.47 2012/01/24 20:03:38 christos Exp $ */
/*
* Copyright (c) 1992, 1993
@@ -87,23 +87,9 @@
#endif /* XXX */
#endif /* XXX */
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value for
- * the machine's strictest data type. The result is u_int and must be
- * cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
#define ALIGNBYTES32 0x7
#define ALIGNBYTES64 0xf
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_long)(p) + ALIGNBYTES) & ~ALIGNBYTES)
#define ALIGN32(p) (((u_long)(p) + ALIGNBYTES32) & ~ALIGNBYTES32)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
/*
Index: src/sys/arch/vax/include/param.h
diff -u src/sys/arch/vax/include/param.h:1.59 src/sys/arch/vax/include/param.h:1.60
--- src/sys/arch/vax/include/param.h:1.59 Fri Jan 20 09:08:07 2012
+++ src/sys/arch/vax/include/param.h Tue Jan 24 15:03:38 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.59 2012/01/20 14:08:07 joerg Exp $ */
+/* $NetBSD: param.h,v 1.60 2012/01/24 20:03:38 christos Exp $ */
/*-
* Copyright (c) 1990 The Regents of the University of California.
* All rights reserved.
@@ -46,22 +46,6 @@
#define MACHINE_ARCH "vax"
#define MID_MACHINE MID_VAX
-/*
- * Round p (pointer or byte index) up to a correctly-aligned value
- * for all data types (int, long, ...). The result is u_int and
- * must be cast to any desired pointer type.
- *
- * ALIGNED_POINTER is a boolean macro that checks whether an address
- * is valid to fetch data elements of type t from on this architecture.
- * This does not reflect the optimal alignment, just the possibility
- * (within reasonable limits).
- *
- */
-
-#define ALIGNBYTES __ALIGNBYTES
-#define ALIGN(p) (((u_int)(p) + ALIGNBYTES) &~ ALIGNBYTES)
-#define ALIGNED_POINTER(p,t) ((((u_long)(p)) & (sizeof(t)-1)) == 0)
-
#define PGSHIFT 12 /* LOG2(NBPG) */
#define NBPG (1 << PGSHIFT) /* (1 << PGSHIFT) bytes/page */
#define PGOFSET (NBPG - 1) /* byte offset into page */
Index: src/sys/kern/init_main.c
diff -u src/sys/kern/init_main.c:1.438 src/sys/kern/init_main.c:1.439
--- src/sys/kern/init_main.c:1.438 Sun Dec 4 14:24:58 2011
+++ src/sys/kern/init_main.c Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: init_main.c,v 1.438 2011/12/04 19:24:58 jym Exp $ */
+/* $NetBSD: init_main.c,v 1.439 2012/01/24 20:03:36 christos Exp $ */
/*-
* Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -97,7 +97,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.438 2011/12/04 19:24:58 jym Exp $");
+__KERNEL_RCSID(0, "$NetBSD: init_main.c,v 1.439 2012/01/24 20:03:36 christos Exp $");
#include "opt_ddb.h"
#include "opt_ipsec.h"
@@ -997,7 +997,7 @@ start_init(void *arg)
/*
* Move out the arg pointers.
*/
- ucp = (void *)STACK_ALIGN(ucp, ALIGNBYTES);
+ ucp = (void *)STACK_ALIGN(ucp, STACK_ALIGNBYTES);
uap = (char **)STACK_ALLOC(ucp, sizeof(char *) * 3);
SCARG(&args, path) = arg0;
SCARG(&args, argp) = uap;
Index: src/sys/kern/kern_exec.c
diff -u src/sys/kern/kern_exec.c:1.333 src/sys/kern/kern_exec.c:1.334
--- src/sys/kern/kern_exec.c:1.333 Sun Dec 4 10:12:07 2011
+++ src/sys/kern/kern_exec.c Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_exec.c,v 1.333 2011/12/04 15:12:07 dholland Exp $ */
+/* $NetBSD: kern_exec.c,v 1.334 2012/01/24 20:03:36 christos Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -59,7 +59,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.333 2011/12/04 15:12:07 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_exec.c,v 1.334 2012/01/24 20:03:36 christos Exp $");
#include "opt_exec.h"
#include "opt_ktrace.h"
@@ -792,11 +792,8 @@ execve1(struct lwp *l, const char *path,
len += (cprng_fast32() % PAGE_SIZE);
#endif /* PAX_ASLR */
-#ifdef STACKALIGN /* arm, etc. */
- len = STACKALIGN(len); /* make the stack "safely" aligned */
-#else
- len = ALIGN(len); /* make the stack "safely" aligned */
-#endif
+ /* make the stack "safely" aligned */
+ len = (size_t)STACK_ALIGN(len, STACK_ALIGNBYTES);
if (len > pack.ep_ssize) { /* in effect, compare to initial limit */
DPRINTF(("%s: stack limit exceeded %zu\n", __func__, len));
Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.399 src/sys/sys/param.h:1.400
--- src/sys/sys/param.h:1.399 Fri Jan 13 11:25:16 2012
+++ src/sys/sys/param.h Tue Jan 24 15:03:36 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.399 2012/01/13 16:25:16 macallan Exp $ */
+/* $NetBSD: param.h,v 1.400 2012/01/24 20:03:36 christos Exp $ */
/*-
* Copyright (c) 1982, 1986, 1989, 1993
@@ -204,6 +204,11 @@
* allocated memory.
*/
#if defined(_KERNEL) || defined(__EXPOSE_STACK)
+
+#ifndef STACK_ALIGNBYTES
+#define STACK_ALIGNBYTES __ALIGNBYTES
+#endif
+
#ifdef __MACHINE_STACK_GROWS_UP
#define STACK_GROW(sp, _size) (((char *)(void *)(sp)) + (_size))
#define STACK_SHRINK(sp, _size) (((char *)(void *)(sp)) - (_size))
@@ -219,9 +224,29 @@
#define STACK_ALLOC(sp, _size) (((char *)(void *)(sp)) - (_size))
#define STACK_MAX(p, _size) ((char *)(void *)(p))
#endif
+
#endif /* defined(_KERNEL) || defined(__EXPOSE_STACK) */
/*
+ * Round p (pointer or byte index) up to a correctly-aligned value for all
+ * data types (int, long, ...). The result is u_int and must be cast to
+ * any desired pointer type.
+ *
+ * ALIGNED_POINTER is a boolean macro that checks whether an address
+ * is valid to fetch data elements of type t from on this architecture.
+ * This does not reflect the optimal alignment, just the possibility
+ * (within reasonable limits).
+ *
+ */
+#define ALIGNBYTES __ALIGNBYTES
+#ifndef ALIGN
+#define ALIGN(p) (((uintptr_t)(p) + ALIGNBYTES) & ~ALIGNBYTES)
+#endif
+#ifndef ALIGNED_POINTER
+#define ALIGNED_POINTER(p,t) ((((uintptr_t)(p)) & (sizeof(t) - 1)) == 0)
+#endif
+
+/*
* Historic priority levels. These are meaningless and remain only
* for source compatibility. Do not use in new code.
*/