PERFORCE change 150344 for review

Rafal Jaworowski raj at FreeBSD.org
Tue Sep 23 13:07:25 UTC 2008


http://perforce.freebsd.org/chv.cgi?CH=150344

Change 150344 by raj at raj_mimi on 2008/09/23 13:06:26

	Introduce basic loader(8) support for ARM.
	
	This relies on sys/boot/uboot support library and assumes an underlying
	U-Boot firmware with standalone apps API enabled. Current
	functionality is limited to netbooting.
	
	Obtained from:	Semihalf

Affected files ...

.. //depot/projects/arm/src/sys/arm/include/bootinfo.h#1 add
.. //depot/projects/arm/src/sys/arm/include/metadata.h#2 edit
.. //depot/projects/arm/src/sys/boot/Makefile#11 edit
.. //depot/projects/arm/src/sys/boot/arm/Makefile#4 edit
.. //depot/projects/arm/src/sys/boot/arm/uboot/Makefile#1 add
.. //depot/projects/arm/src/sys/boot/arm/uboot/conf.c#1 add
.. //depot/projects/arm/src/sys/boot/arm/uboot/help.uboot#1 add
.. //depot/projects/arm/src/sys/boot/arm/uboot/ldscript.arm#1 add
.. //depot/projects/arm/src/sys/boot/arm/uboot/start.S#1 add
.. //depot/projects/arm/src/sys/boot/arm/uboot/version#1 add
.. //depot/projects/arm/src/sys/boot/common/Makefile.inc#4 edit
.. //depot/projects/arm/src/sys/boot/common/load_elf.c#6 edit
.. //depot/projects/arm/src/sys/boot/ficl/Makefile#6 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/include/metadata.h#2 (text+ko) ====

@@ -29,6 +29,6 @@
 #ifndef _MACHINE_METADATA_H_
 #define	_MACHINE_METADATA_H_
 
-#define	MODINFOMD_SMAP		0x1001
+#define	MODINFOMD_BOOTINFO	0x1001
 
 #endif /* !_MACHINE_METADATA_H_ */

==== //depot/projects/arm/src/sys/boot/Makefile#11 (text+ko) ====

@@ -22,7 +22,7 @@
 .endif
 
 # Build U-Boot library.
-.if ${MACHINE_ARCH} == "powerpc"
+.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "arm"
 SUBDIR+=		uboot
 .endif
 

==== //depot/projects/arm/src/sys/boot/arm/Makefile#4 (text+ko) ====

@@ -1,5 +1,5 @@
 # $FreeBSD: src/sys/boot/arm/Makefile,v 1.3 2006/10/23 00:05:28 imp Exp $
 
-SUBDIR=
+SUBDIR=		uboot
 
 .include <bsd.subdir.mk>

==== //depot/projects/arm/src/sys/boot/common/Makefile.inc#4 (text+ko) ====

@@ -9,7 +9,7 @@
 SRCS+=	load_elf64.c load_elf64_obj.c reloc_elf64.c
 .elif ${MACHINE} == "pc98"
 SRCS+=	load_elf32.c load_elf32_obj.c reloc_elf32.c
-.elif ${MACHINE_ARCH} == "powerpc"
+.elif ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "arm"
 SRCS+=	load_elf32.c reloc_elf32.c
 .elif ${MACHINE_ARCH} == "sparc64" || ${MACHINE_ARCH} == "ia64"
 SRCS+=	load_elf64.c reloc_elf64.c

==== //depot/projects/arm/src/sys/boot/common/load_elf.c#6 (text+ko) ====

@@ -289,7 +289,16 @@
 #ifdef ELF_VERBOSE
 	    printf("Converted entry 0x%08x\n", ehdr->e_entry);
 #endif
-	} else 
+	} else
+	    off = 0;
+#elif defined(__arm__)
+	if (off & 0xf0000000u) {
+	    off = -(off & 0xf0000000u);
+	    ehdr->e_entry += off;
+#ifdef ELF_VERBOSE
+	    printf("Converted entry 0x%08x\n", ehdr->e_entry);
+#endif
+	} else
 	    off = 0;
 #else
 	off = 0;		/* other archs use direct mapped kernels */

==== //depot/projects/arm/src/sys/boot/ficl/Makefile#6 (text+ko) ====

@@ -14,7 +14,7 @@
 .if ${MACHINE_ARCH} == "i386"
 CFLAGS+=	-mno-sse3
 .endif
-.if ${MACHINE_ARCH} == "powerpc"
+.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "arm"
 CFLAGS+=	-msoft-float
 .endif
 .if ${MACHINE} == "pc98"


More information about the p4-projects mailing list