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