ports/147696: [patch] powerpc64 support for security/nss
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Tue Jun 8 19:10:04 UTC 2010
>Number: 147696
>Category: ports
>Synopsis: [patch] powerpc64 support for security/nss
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Tue Jun 08 19:10:03 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator: Nathan Whitehorn
>Release: FreeBSD 9.0-CURRENT powerpc64
>Organization:
University of Wisconsin
>Environment:
System: FreeBSD anacreon.physics.wisc.edu 9.0-CURRENT FreeBSD 9.0-CURRENT #3 r208870:208872: Sun Jun 6 09:33:03 CDT 2010 root at anacreon.physics.wisc.edu:/usr/obj/scratch/src/sys/ANACREON powerpc64
>Description:
security/nss fails to build on powerpc64, due to missing CPU_ARCH detection
and some G5-specific code in mpcpucache.c to detect cacheline sizes.
>How-To-Repeat:
>Fix:
The attached patch adds CPU_ARCH logic for powerpc64 and uses a
FreeBSD-specific sysctl interface to detect cacheline sizes on PPC64 systems.
--- nss-ppc64.diff begins here ---
--- mpcpucache.c.bak 2009-03-10 16:18:07.000000000 -0500
+++ mpcpucache.c 2010-06-02 08:00:28.000000000 -0500
@@ -733,6 +733,32 @@
#endif
#if defined(__ppc64__)
+
+#if defined(__FreeBSD__)
+#include <sys/stddef.h>
+#include <sys/sysctl.h>
+
+#include <machine/cpu.h>
+#include <machine/md_var.h>
+
+unsigned long
+s_mpi_getProcessorLineSize()
+{
+ static int cacheline_size = 0;
+ static int cachemib[] = { CTL_MACHDEP, CPU_CACHELINE };
+ int clen;
+
+ if (cacheline_size > 0)
+ return cacheline_size;
+
+ clen = sizeof(cacheline_size);
+ if (sysctl(cachemib, sizeof(cachemib) / sizeof(cachemib[0]),
+ &cacheline_size, &clen, NULL, 0) < 0 || !cacheline_size)
+ return 128; /* guess */
+
+ return cacheline_size;
+}
+#else
/*
* Sigh, The PPC has some really nice features to help us determine cache
* size, since it had lots of direct control functions to do so. The POWER
@@ -785,6 +811,7 @@
}
return 0;
}
+#endif
#define MPI_GET_PROCESSOR_LINE_SIZE_DEFINED 1
#endif
--- patch-..::coreconf::FreeBSD.mk.bak 2010-06-02 07:44:28.000000000 -0500
+++ files/patch-..::coreconf::FreeBSD.mk 2010-06-02 07:48:03.000000000 -0500
@@ -13,7 +13,7 @@
RANLIB = ranlib
CPU_ARCH = $(OS_TEST)
-@@ -50,7 +50,22 @@
+@@ -50,7 +50,26 @@
CPU_ARCH = x86
endif
ifeq ($(CPU_ARCH),amd64)
@@ -24,6 +24,10 @@
+ifeq ($(OS_TEST),alpha)
+CPU_ARCH = alpha
+endif
++ifeq ($(OS_TEST),powerpc64)
++CPU_ARCH = powerpc
++USE_64 = 1
++endif
+ifeq ($(OS_TEST),powerpc)
+CPU_ARCH = powerpc
+endif
--- nss-ppc64.diff ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list