Module Name:    src
Committed By:   rin
Date:           Sat Jun 17 11:57:49 UTC 2023

Modified Files:
        src/sys/arch/arm/xscale: files.ixp425 ixp425-fw.mk ixp425_npe.c
Added Files:
        src/sys/arch/arm/xscale: ixp425_npe_fw.S

Log Message:
Rework microcode for IXP425 npe(4).

Instead of using objcopy(1), which cannot handle EABI version
embedded in e_flags of ELF header, add a dedicated asm file.

If proprietary microcode binary is present, it is incbin'ed
from that asm file.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/arm/xscale/files.ixp425
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/xscale/ixp425-fw.mk
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/xscale/ixp425_npe.c
cvs rdiff -u -r0 -r1.1 src/sys/arch/arm/xscale/ixp425_npe_fw.S

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/arm/xscale/files.ixp425
diff -u src/sys/arch/arm/xscale/files.ixp425:1.12 src/sys/arch/arm/xscale/files.ixp425:1.13
--- src/sys/arch/arm/xscale/files.ixp425:1.12	Thu Jul 12 10:46:42 2018
+++ src/sys/arch/arm/xscale/files.ixp425	Sat Jun 17 11:57:49 2023
@@ -1,4 +1,4 @@
-#       $NetBSD: files.ixp425,v 1.12 2018/07/12 10:46:42 maxv Exp $
+#       $NetBSD: files.ixp425,v 1.13 2023/06/17 11:57:49 rin Exp $
 #
 # Configuration info for Intel IXP4xx CPU support
 #
@@ -50,6 +50,7 @@ file	arch/arm/xscale/ixp425_qmgr.c		ixme
 device	ixpnpe { [phy=-1] }
 attach	ixpnpe at ixme
 file	arch/arm/xscale/ixp425_npe.c		ixpnpe
+file	arch/arm/xscale/ixp425_npe_fw.S		ixpnpe
 
 # NPE Ethernet
 device	npe: ether, ifnet, arp, mii

Index: src/sys/arch/arm/xscale/ixp425-fw.mk
diff -u src/sys/arch/arm/xscale/ixp425-fw.mk:1.2 src/sys/arch/arm/xscale/ixp425-fw.mk:1.3
--- src/sys/arch/arm/xscale/ixp425-fw.mk:1.2	Fri Mar 26 15:55:33 2010
+++ src/sys/arch/arm/xscale/ixp425-fw.mk	Sat Jun 17 11:57:49 2023
@@ -1,4 +1,4 @@
-#	$NetBSD: ixp425-fw.mk,v 1.2 2010/03/26 15:55:33 jakllsch Exp $
+#	$NetBSD: ixp425-fw.mk,v 1.3 2023/06/17 11:57:49 rin Exp $
 
 #
 # For IXP425 NE support, this file must be included by the board-specific
@@ -10,12 +10,7 @@
 # a suitable microcode image for IXP425 Ethernet support.
 #
 
-.if exists($S/arch/arm/xscale/IxNpeMicrocode.dat)
-MD_OBJS+=	ixp425_fw.o
-CPPFLAGS+=	-DIXP425_NPE_MICROCODE
-
-ixp425_fw.o:	$S/arch/arm/xscale/IxNpeMicrocode.dat
-	-rm -f ${.OBJDIR}/IxNpeMicrocode.dat
-	-ln -s $S/arch/arm/xscale/IxNpeMicrocode.dat ${.OBJDIR}
-	${OBJCOPY} -I binary -O default -B arm IxNpeMicrocode.dat ${.TARGET}
+NPE_MICROCODE=	$S/arch/arm/xscale/IxNpeMicrocode.dat
+.if exists(${MICROCODE})
+CPPFLAGS+=	-DIXP425_NPE_MICROCODE=\"${NPE_MICROCODE}\"
 .endif

Index: src/sys/arch/arm/xscale/ixp425_npe.c
diff -u src/sys/arch/arm/xscale/ixp425_npe.c:1.16 src/sys/arch/arm/xscale/ixp425_npe.c:1.17
--- src/sys/arch/arm/xscale/ixp425_npe.c:1.16	Tue Sep 27 06:36:43 2022
+++ src/sys/arch/arm/xscale/ixp425_npe.c	Sat Jun 17 11:57:49 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: ixp425_npe.c,v 1.16 2022/09/27 06:36:43 skrll Exp $	*/
+/*	$NetBSD: ixp425_npe.c,v 1.17 2023/06/17 11:57:49 rin Exp $	*/
 
 /*-
  * Copyright (c) 2006 Sam Leffler, Errno Consulting
@@ -62,7 +62,7 @@
 #if 0
 __FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_npe.c,v 1.1 2006/11/19 23:55:23 sam Exp $");
 #endif
-__KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c,v 1.16 2022/09/27 06:36:43 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c,v 1.17 2023/06/17 11:57:49 rin Exp $");
 
 /*
  * Intel XScale Network Processing Engine (NPE) support.
@@ -105,21 +105,7 @@ __KERNEL_RCSID(0, "$NetBSD: ixp425_npe.c
 
 #include "locators.h"
 
-/*
- * IXP425_NPE_MICROCODE will be defined by ixp425-fw.mk IFF the
- * microcode object file exists in sys/arch/arm/xscale.
- *
- * To permit building the NPE drivers without microcode (so they
- * don't bitrot due to lack of use), we use "empty" microcode so
- * that the NPE drivers will simply fail to start at runtime.
- */
-#ifdef IXP425_NPE_MICROCODE
-extern char	_binary_IxNpeMicrocode_dat_start[];
-#else
-static char	_binary_IxNpeMicrocode_dat_start[] = {
-	0xfe, 0xed, 0xf0, 0x0d, 0xfe, 0xed, 0xf0, 0x0d
-};
-#endif
+extern char _binary_IxNpeMicrocode_dat_start[];
 
 #define	IX_NPEDL_NPEIMAGE_FIELD_MASK	0xff
 

Added files:

Index: src/sys/arch/arm/xscale/ixp425_npe_fw.S
diff -u /dev/null src/sys/arch/arm/xscale/ixp425_npe_fw.S:1.1
--- /dev/null	Sat Jun 17 11:57:49 2023
+++ src/sys/arch/arm/xscale/ixp425_npe_fw.S	Sat Jun 17 11:57:49 2023
@@ -0,0 +1,82 @@
+/*	$NetBSD: ixp425_npe_fw.S,v 1.1 2023/06/17 11:57:49 rin Exp $	*/
+
+/*-
+ * Copyright (c) 2006 Sam Leffler, Errno Consulting
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer,
+ *    without modification.
+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
+ *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+ *    redistribution must be conditioned upon including a substantially
+ *    similar Disclaimer requirement for further binary redistribution.
+ *
+ * NO WARRANTY
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
+ * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGES.
+ */
+
+/*-
+ * Copyright (c) 2001-2005, Intel Corporation.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the Intel Corporation nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ * 
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+*/
+
+#include <arm/asm.h>
+
+/*
+ * IXP425_NPE_MICROCODE will be defined by ixp425-fw.mk IFF the
+ * microcode object file exists in sys/arch/arm/xscale.
+ *
+ * To permit building the NPE drivers without microcode (so they
+ * don't bitrot due to lack of use), we use "empty" microcode so
+ * that the NPE drivers will simply fail to start at runtime.
+ */
+
+	.align		2
+	.section	.data
+	.global		_C_LABEL(_binary_IxNpeMicrocode_dat_start)
+_C_LABEL(_binary_IxNpeMicrocode_dat_start):
+#ifdef IXP425_NPE_MICROCODE
+	.incbin		IXP425_NPE_MICROCODE
+#else
+	.word		0xfeedf00d
+	.word		0xfeedf00d
+#endif

Reply via email to