Date: Mon, 18 Feb 2013 00:51:32 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 222156 for review Message-ID: <201302180051.r1I0pW3J072816@skunkworks.freebsd.org>
index | next in thread | raw e-mail
http://p4web.freebsd.org/@@222156?ac=10 Change 222156 by rwatson@rwatson_zenith_cl_cam_ac_uk on 2013/02/18 00:50:36 Checkpoint an adaptation of the ARM at91 version of boot2 for use on the FreeBSD/BERI MIPS platform, including support for Intel StrataFlash-originated boot2 parts (which must self-relocate to DRAM before getting too far), and an Altera JTAG UART. Some elements of this work (e.g., the "boot:" prompt) and others don't (UFS-embedded kernel loading from the on-board flash, SD card kernel loading). Among other things, this required making the ARM-derived code 64-bit safe. Some further refinement, especially SD support, is still required. Affected files ... .. //depot/projects/ctsrd/beribsd/src/sys/boot/common/util.c#3 edit .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/Makefile#2 edit .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/altera_jtag_uart.c#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/boot2.c#2 edit .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/cons.h#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/drv.h#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/flash.c#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/linker.cfg#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/mips.h#1 add .. //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/start.s#1 add Differences ... ==== //depot/projects/ctsrd/beribsd/src/sys/boot/common/util.c#3 (text+ko) ==== @@ -125,7 +125,15 @@ va_start(ap, fmt); while ((c = *fmt++) != '\0') { - if (c != '%') { + switch (c) { + case '%': + break; + + case '\n': + putchar('\r'); + /* FALLTHROUGH */ + + default: putchar(c); continue; } ==== //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/Makefile#2 (text+ko) ==== @@ -1,15 +1,37 @@ # $FreeBSD$ -P=boot2 -FILES=${P} -SRCS=mips_init.S boot2.c beri_board.c +PROG= boot2 +BINDIR?= /boot +INSTALLFLAGS= -b + +FILES= ${PROG} +SRCS= start.s \ + boot2.c \ + altera_jtag_uart.c \ + flash.c + NO_MAN= -LDFLAGS=-e 0 -T ${.CURDIR}/../linker.cfg -OBJS+= ${SRCS:N*.h:R:S/$/.o/g} + +AFLAGS= -G0 + +CFLAGS= -ffreestanding \ + -I${.CURDIR} \ + -I${.CURDIR}/../../../common \ + -I${.CURDIR}/../../../.. \ + -D_KERNEL \ + -Wall \ + -G0 -Xassembler -G0 \ + -fno-pic -mno-abicalls + +LDFLAGS= -nostdlib \ + -static \ + -N \ + -T linker.cfg \ + -G0 + +boot2: linker.cfg + +boot2.img: boot2 + objcopy -S -O binary boot2 boot2.img .include <bsd.prog.mk> - -CFLAGS+= \ - -I${.CURDIR}/../../../common \ - -I${.CURDIR}/../../../.. \ - -D_KERNEL ==== //depot/projects/ctsrd/beribsd/src/sys/boot/mips/beri/boot2/boot2.c#2 (text+ko) ==== @@ -1,4 +1,32 @@ /*- + * Copyright (c) 2013 Robert N. M. Watson + * All rights reserved. + * + * This software was developed by SRI International and the University of + * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) + * ("CTSRD"), as part of the DARPA CRASH research programme. + * + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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. + * * Copyright (c) 2008 John Hay * Copyright (c) 2006 Warner Losh * Copyright (c) 1998 Robert Nordier @@ -28,8 +56,11 @@ #include <stdarg.h> -#include "lib.h" -#include "board.h" +#include "cons.h" +#include "drv.h" + +//#include "lib.h" +//#include "board.h" #define RBX_ASKNAME 0x0 /* -a */ #define RBX_SINGLE 0x1 /* -s */ @@ -66,8 +97,7 @@ #define PATH_DOTCONFIG "/boot.config" #define PATH_CONFIG "/boot/config" -//#define PATH_KERNEL "/boot/kernel/kernel" -#define PATH_KERNEL "/boot/kernel/kernel.gz.tramp" +#define PATH_KERNEL "/boot/kernel/kernel" extern uint32_t _end; @@ -100,9 +130,12 @@ static void fixup_boot_drv(caddr_t, int, int, int); #endif +#include "util.c" #define UFS_SMALL_CGBASE #include "ufsread.c" +static struct dmadat __dmadat; + #ifdef DEBUG #define DPRINTF(fmt, ...) printf(fmt, __VA_ARGS__) #else @@ -143,7 +176,7 @@ default: if (s - cmd < sizeof(cmd) - 1) *s++ = c; - xputchar(c); + putchar(c); } c = getc(10000); } @@ -155,8 +188,8 @@ int autoboot, c = 0; ufs_ino_t ino; - dmadat = (void *)(0x20000000 + (16 << 20)); - board_init(); + dmadat = &__dmadat; + //board_init(); autoboot = 1; @@ -182,11 +215,11 @@ if (!autoboot || (OPT_CHECK(RBX_NOINTR) == 0 && (c = getc(2)) != 0)) getstr(c); - xputchar('\n'); + putchar('\n'); autoboot = 0; c = 0; if (parse()) - xputchar('\a'); + putchar('\a'); else load(); } @@ -195,11 +228,11 @@ static void load(void) { - Elf32_Ehdr eh; - static Elf32_Phdr ep[2]; + Elf64_Ehdr eh; + static Elf64_Phdr ep[2]; caddr_t p; ufs_ino_t ino; - uint32_t addr; + uint64_t addr; int i, j; #ifdef FIXUP_BOOT_DRV caddr_t staddr;help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302180051.r1I0pW3J072816>
