aboutsummaryrefslogtreecommitdiff
path: root/sys/boot/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sys/boot/powerpc')
-rw-r--r--sys/boot/powerpc/Makefile13
-rw-r--r--sys/boot/powerpc/Makefile.inc3
-rw-r--r--sys/boot/powerpc/boot1.chrp/Makefile42
-rw-r--r--sys/boot/powerpc/boot1.chrp/Makefile.hfs4
-rw-r--r--sys/boot/powerpc/boot1.chrp/boot1.c777
-rw-r--r--sys/boot/powerpc/boot1.chrp/bootinfo.txt14
-rwxr-xr-xsys/boot/powerpc/boot1.chrp/generate-hfs.sh64
-rw-r--r--sys/boot/powerpc/boot1.chrp/hfs.tmpl.bz2.uu18
-rw-r--r--sys/boot/powerpc/kboot/Makefile50
-rw-r--r--sys/boot/powerpc/kboot/conf.c117
-rw-r--r--sys/boot/powerpc/kboot/host_syscall.S75
-rw-r--r--sys/boot/powerpc/kboot/host_syscall.h51
-rw-r--r--sys/boot/powerpc/kboot/hostcons.c97
-rw-r--r--sys/boot/powerpc/kboot/hostdisk.c125
-rw-r--r--sys/boot/powerpc/kboot/kbootfdt.c184
-rw-r--r--sys/boot/powerpc/kboot/kerneltramp.S55
-rw-r--r--sys/boot/powerpc/kboot/ldscript.powerpc111
-rw-r--r--sys/boot/powerpc/kboot/main.c319
-rw-r--r--sys/boot/powerpc/kboot/metadata.c343
-rw-r--r--sys/boot/powerpc/kboot/ppc64_elf_freebsd.c124
-rw-r--r--sys/boot/powerpc/kboot/version6
-rw-r--r--sys/boot/powerpc/ofw/Makefile55
-rw-r--r--sys/boot/powerpc/ofw/conf.c122
-rw-r--r--sys/boot/powerpc/ofw/ldscript.powerpc138
-rw-r--r--sys/boot/powerpc/ofw/metadata.c349
-rw-r--r--sys/boot/powerpc/ofw/ofwfdt.c214
-rw-r--r--sys/boot/powerpc/ofw/start.c74
-rw-r--r--sys/boot/powerpc/ofw/version6
-rw-r--r--sys/boot/powerpc/ps3/Makefile48
-rw-r--r--sys/boot/powerpc/ps3/conf.c123
-rw-r--r--sys/boot/powerpc/ps3/devicename.c238
-rw-r--r--sys/boot/powerpc/ps3/ldscript.powerpc111
-rw-r--r--sys/boot/powerpc/ps3/lv1call.S346
-rw-r--r--sys/boot/powerpc/ps3/lv1call.h80
-rw-r--r--sys/boot/powerpc/ps3/main.c248
-rw-r--r--sys/boot/powerpc/ps3/metadata.c333
-rw-r--r--sys/boot/powerpc/ps3/ppc64_elf_freebsd.c101
-rw-r--r--sys/boot/powerpc/ps3/ps3.h35
-rw-r--r--sys/boot/powerpc/ps3/ps3bus.h41
-rw-r--r--sys/boot/powerpc/ps3/ps3cdrom.c156
-rw-r--r--sys/boot/powerpc/ps3/ps3cons.c173
-rw-r--r--sys/boot/powerpc/ps3/ps3devdesc.h53
-rw-r--r--sys/boot/powerpc/ps3/ps3disk.c315
-rw-r--r--sys/boot/powerpc/ps3/ps3mmu.c120
-rw-r--r--sys/boot/powerpc/ps3/ps3net.c278
-rw-r--r--sys/boot/powerpc/ps3/ps3repo.c249
-rw-r--r--sys/boot/powerpc/ps3/ps3repo.h51
-rw-r--r--sys/boot/powerpc/ps3/ps3stor.c176
-rw-r--r--sys/boot/powerpc/ps3/ps3stor.h59
-rw-r--r--sys/boot/powerpc/ps3/start.S169
-rw-r--r--sys/boot/powerpc/ps3/version8
-rw-r--r--sys/boot/powerpc/uboot/Makefile37
-rw-r--r--sys/boot/powerpc/uboot/conf.c112
-rw-r--r--sys/boot/powerpc/uboot/ldscript.powerpc138
-rw-r--r--sys/boot/powerpc/uboot/start.S94
-rw-r--r--sys/boot/powerpc/uboot/version11
56 files changed, 0 insertions, 7453 deletions
diff --git a/sys/boot/powerpc/Makefile b/sys/boot/powerpc/Makefile
deleted file mode 100644
index 969eee8dc63e..000000000000
--- a/sys/boot/powerpc/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-SUBDIR= boot1.chrp ofw uboot
-.if ${MACHINE_ARCH} != "powerpcspe"
-SUBDIR+= ps3
-.endif
-.if ${MK_FDT} == "yes"
-SUBDIR+= kboot
-.endif
-
-.include <bsd.subdir.mk>
diff --git a/sys/boot/powerpc/Makefile.inc b/sys/boot/powerpc/Makefile.inc
deleted file mode 100644
index 265f86d1ed55..000000000000
--- a/sys/boot/powerpc/Makefile.inc
+++ /dev/null
@@ -1,3 +0,0 @@
-# $FreeBSD$
-
-.include "../Makefile.inc"
diff --git a/sys/boot/powerpc/boot1.chrp/Makefile b/sys/boot/powerpc/boot1.chrp/Makefile
deleted file mode 100644
index 384d0abc2788..000000000000
--- a/sys/boot/powerpc/boot1.chrp/Makefile
+++ /dev/null
@@ -1,42 +0,0 @@
-# $FreeBSD$
-
-.include <bsd.init.mk>
-
-SSP_CFLAGS=
-
-PROG= boot1.elf
-NEWVERSWHAT= "Open Firmware boot block" ${MACHINE_ARCH}
-INSTALLFLAGS= -b
-
-FILES= boot1.hfs
-SRCS= boot1.c ashldi3.c syncicache.c
-
-MAN=
-
-CFLAGS= -ffreestanding -msoft-float \
- -I${LDRSRC} -I${SYSDIR} -I${SASRC} \
- -D_STANDALONE
-LDFLAGS=-nostdlib -static -Wl,-N
-
-.PATH: ${SYSDIR}/libkern ${SRCTOP}/lib/libc/powerpc/gen ${.CURDIR}
-
-# The following inserts out objects into a template HFS
-# created by generate-hfs.sh
-
-.include "${.CURDIR}/Makefile.hfs"
-
-boot1.hfs: boot1.elf bootinfo.txt
- echo ${.OBJDIR}
- uudecode ${.CURDIR}/hfs.tmpl.bz2.uu
- mv hfs.tmpl.bz2 ${.TARGET}.bz2
- bzip2 -f -d ${.TARGET}.bz2
- ${DD} if=boot1.elf of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc
- ${DD} if=${.CURDIR}/bootinfo.txt of=${.TARGET} seek=${BOOTINFO_OFFSET} \
- conv=notrunc
-
-CLEANFILES+= boot1.hfs
-
-boot1.o: ${SASRC}/ufsread.c
-
-.include <bsd.prog.mk>
-
diff --git a/sys/boot/powerpc/boot1.chrp/Makefile.hfs b/sys/boot/powerpc/boot1.chrp/Makefile.hfs
deleted file mode 100644
index c6c2d866f6bf..000000000000
--- a/sys/boot/powerpc/boot1.chrp/Makefile.hfs
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file autogenerated by generate-hfs.sh - DO NOT EDIT
-# $FreeBSD$
-BOOTINFO_OFFSET=0x9c
-BOOT1_OFFSET=0x1c
diff --git a/sys/boot/powerpc/boot1.chrp/boot1.c b/sys/boot/powerpc/boot1.chrp/boot1.c
deleted file mode 100644
index 8de8e9f17f41..000000000000
--- a/sys/boot/powerpc/boot1.chrp/boot1.c
+++ /dev/null
@@ -1,777 +0,0 @@
-/*-
- * Copyright (c) 1998 Robert Nordier
- * All rights reserved.
- * Copyright (c) 2001 Robert Drehmel
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms are freely
- * permitted provided that the above copyright notice and this
- * paragraph and the following disclaimer are duplicated in all
- * such forms.
- *
- * This software is provided "AS IS" and without any express or
- * implied warranties, including, without limitation, the implied
- * warranties of merchantability and fitness for a particular
- * purpose.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/dirent.h>
-#include <machine/elf.h>
-#include <machine/stdarg.h>
-
-#include "paths.h"
-
-#define BSIZEMAX 16384
-
-typedef int putc_func_t(char c, void *arg);
-typedef int32_t ofwh_t;
-
-struct sp_data {
- char *sp_buf;
- u_int sp_len;
- u_int sp_size;
-};
-
-static const char digits[] = "0123456789abcdef";
-
-static char bootpath[128];
-static char bootargs[128];
-
-static ofwh_t bootdev;
-
-static struct fs fs;
-static char blkbuf[BSIZEMAX];
-static unsigned int fsblks;
-
-static uint32_t fs_off;
-
-int main(int ac, char **av);
-
-static void exit(int) __dead2;
-static void load(const char *);
-static int dskread(void *, u_int64_t, int);
-
-static void usage(void);
-
-static void bcopy(const void *src, void *dst, size_t len);
-static void bzero(void *b, size_t len);
-
-static int domount(const char *device, int quiet);
-
-static void panic(const char *fmt, ...) __dead2;
-static int printf(const char *fmt, ...);
-static int putchar(char c, void *arg);
-static int vprintf(const char *fmt, va_list ap);
-static int vsnprintf(char *str, size_t sz, const char *fmt, va_list ap);
-
-static int __printf(const char *fmt, putc_func_t *putc, void *arg, va_list ap);
-static int __putc(char c, void *arg);
-static int __puts(const char *s, putc_func_t *putc, void *arg);
-static int __sputc(char c, void *arg);
-static char *__uitoa(char *buf, u_int val, int base);
-static char *__ultoa(char *buf, u_long val, int base);
-
-void __syncicache(void *, int);
-
-/*
- * Open Firmware interface functions
- */
-typedef u_int32_t ofwcell_t;
-typedef u_int32_t u_ofwh_t;
-typedef int (*ofwfp_t)(void *);
-ofwfp_t ofw; /* the prom Open Firmware entry */
-ofwh_t chosenh;
-
-void ofw_init(void *, int, int (*)(void *), char *, int);
-static ofwh_t ofw_finddevice(const char *);
-static ofwh_t ofw_open(const char *);
-static int ofw_close(ofwh_t);
-static int ofw_getprop(ofwh_t, const char *, void *, size_t);
-static int ofw_setprop(ofwh_t, const char *, void *, size_t);
-static int ofw_read(ofwh_t, void *, size_t);
-static int ofw_write(ofwh_t, const void *, size_t);
-static int ofw_claim(void *virt, size_t len, u_int align);
-static int ofw_seek(ofwh_t, u_int64_t);
-static void ofw_exit(void) __dead2;
-
-ofwh_t bootdevh;
-ofwh_t stdinh, stdouth;
-
-__asm(" \n\
- .data \n\
- .align 4 \n\
-stack: \n\
- .space 16384 \n\
- \n\
- .text \n\
- .globl _start \n\
-_start: \n\
- lis %r1,stack@ha \n\
- addi %r1,%r1,stack@l \n\
- addi %r1,%r1,8192 \n\
- \n\
- b ofw_init \n\
-");
-
-void
-ofw_init(void *vpd, int res, int (*openfirm)(void *), char *arg, int argl)
-{
- char *av[16];
- char *p;
- int ac;
-
- ofw = openfirm;
-
- chosenh = ofw_finddevice("/chosen");
- ofw_getprop(chosenh, "stdin", &stdinh, sizeof(stdinh));
- ofw_getprop(chosenh, "stdout", &stdouth, sizeof(stdouth));
- ofw_getprop(chosenh, "bootargs", bootargs, sizeof(bootargs));
- ofw_getprop(chosenh, "bootpath", bootpath, sizeof(bootpath));
-
- bootargs[sizeof(bootargs) - 1] = '\0';
- bootpath[sizeof(bootpath) - 1] = '\0';
-
- p = bootpath;
- while (*p != '\0') {
- /* Truncate partition ID */
- if (*p == ':') {
- ofw_close(bootdev);
- *(++p) = '\0';
- break;
- }
- p++;
- }
-
- ac = 0;
- p = bootargs;
- for (;;) {
- while (*p == ' ' && *p != '\0')
- p++;
- if (*p == '\0' || ac >= 16)
- break;
- av[ac++] = p;
- while (*p != ' ' && *p != '\0')
- p++;
- if (*p != '\0')
- *p++ = '\0';
- }
-
- exit(main(ac, av));
-}
-
-static ofwh_t
-ofw_finddevice(const char *name)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"finddevice",
- 1,
- 1,
- (ofwcell_t)name,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_finddevice: name=\"%s\"\n", name);
- return (1);
- }
- return (args[4]);
-}
-
-static int
-ofw_getprop(ofwh_t ofwh, const char *name, void *buf, size_t len)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"getprop",
- 4,
- 1,
- (u_ofwh_t)ofwh,
- (ofwcell_t)name,
- (ofwcell_t)buf,
- len,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_getprop: ofwh=0x%x buf=%p len=%u\n",
- ofwh, buf, len);
- return (1);
- }
- return (0);
-}
-
-static int
-ofw_setprop(ofwh_t ofwh, const char *name, void *buf, size_t len)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"setprop",
- 4,
- 1,
- (u_ofwh_t)ofwh,
- (ofwcell_t)name,
- (ofwcell_t)buf,
- len,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_setprop: ofwh=0x%x buf=%p len=%u\n",
- ofwh, buf, len);
- return (1);
- }
- return (0);
-}
-
-static ofwh_t
-ofw_open(const char *path)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"open",
- 1,
- 1,
- (ofwcell_t)path,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_open: path=\"%s\"\n", path);
- return (-1);
- }
- return (args[4]);
-}
-
-static int
-ofw_close(ofwh_t devh)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"close",
- 1,
- 0,
- (u_ofwh_t)devh
- };
-
- if ((*ofw)(args)) {
- printf("ofw_close: devh=0x%x\n", devh);
- return (1);
- }
- return (0);
-}
-
-static int
-ofw_claim(void *virt, size_t len, u_int align)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"claim",
- 3,
- 1,
- (ofwcell_t)virt,
- len,
- align,
- 0,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_claim: virt=%p len=%u\n", virt, len);
- return (1);
- }
-
- return (0);
-}
-
-static int
-ofw_read(ofwh_t devh, void *buf, size_t len)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"read",
- 3,
- 1,
- (u_ofwh_t)devh,
- (ofwcell_t)buf,
- len,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_read: devh=0x%x buf=%p len=%u\n", devh, buf, len);
- return (1);
- }
- return (0);
-}
-
-static int
-ofw_write(ofwh_t devh, const void *buf, size_t len)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"write",
- 3,
- 1,
- (u_ofwh_t)devh,
- (ofwcell_t)buf,
- len,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_write: devh=0x%x buf=%p len=%u\n", devh, buf, len);
- return (1);
- }
- return (0);
-}
-
-static int
-ofw_seek(ofwh_t devh, u_int64_t off)
-{
- ofwcell_t args[] = {
- (ofwcell_t)"seek",
- 3,
- 1,
- (u_ofwh_t)devh,
- off >> 32,
- off,
- 0
- };
-
- if ((*ofw)(args)) {
- printf("ofw_seek: devh=0x%x off=0x%lx\n", devh, off);
- return (1);
- }
- return (0);
-}
-
-static void
-ofw_exit(void)
-{
- ofwcell_t args[3];
-
- args[0] = (ofwcell_t)"exit";
- args[1] = 0;
- args[2] = 0;
-
- for (;;)
- (*ofw)(args);
-}
-
-static void
-bcopy(const void *src, void *dst, size_t len)
-{
- const char *s = src;
- char *d = dst;
-
- while (len-- != 0)
- *d++ = *s++;
-}
-
-static void
-memcpy(void *dst, const void *src, size_t len)
-{
- bcopy(src, dst, len);
-}
-
-static void
-bzero(void *b, size_t len)
-{
- char *p = b;
-
- while (len-- != 0)
- *p++ = 0;
-}
-
-static int
-strcmp(const char *s1, const char *s2)
-{
- for (; *s1 == *s2 && *s1; s1++, s2++)
- ;
- return ((u_char)*s1 - (u_char)*s2);
-}
-
-#include "ufsread.c"
-
-int
-main(int ac, char **av)
-{
- const char *path;
- char bootpath_full[255];
- int i, len;
-
- path = PATH_LOADER;
- for (i = 0; i < ac; i++) {
- switch (av[i][0]) {
- case '-':
- switch (av[i][1]) {
- default:
- usage();
- }
- break;
- default:
- path = av[i];
- break;
- }
- }
-
- printf(" \n>> FreeBSD/powerpc Open Firmware boot block\n"
- " Boot path: %s\n"
- " Boot loader: %s\n", bootpath, path);
-
- len = 0;
- while (bootpath[len] != '\0') len++;
-
- memcpy(bootpath_full,bootpath,len+1);
-
- if (bootpath_full[len-1] != ':') {
- /* First try full volume */
- if (domount(bootpath_full,1) == 0)
- goto out;
-
- /* Add a : so that we try partitions if that fails */
- if (bootdev > 0)
- ofw_close(bootdev);
- bootpath_full[len] = ':';
- len += 1;
- }
-
- /* Loop through first 16 partitions to find a UFS one */
- for (i = 0; i < 16; i++) {
- if (i < 10) {
- bootpath_full[len] = i + '0';
- bootpath_full[len+1] = '\0';
- } else {
- bootpath_full[len] = '1';
- bootpath_full[len+1] = i - 10 + '0';
- bootpath_full[len+2] = '\0';
- }
-
- if (domount(bootpath_full,1) >= 0)
- break;
-
- if (bootdev > 0)
- ofw_close(bootdev);
- }
-
- if (i >= 16)
- panic("domount");
-
-out:
- printf(" Boot volume: %s\n",bootpath_full);
- ofw_setprop(chosenh, "bootargs", bootpath_full, len+2);
- load(path);
- return (1);
-}
-
-static void
-usage(void)
-{
-
- printf("usage: boot device [/path/to/loader]\n");
- exit(1);
-}
-
-static void
-exit(int code)
-{
-
- ofw_exit();
-}
-
-static struct dmadat __dmadat;
-
-static int
-domount(const char *device, int quiet)
-{
-
- dmadat = &__dmadat;
- if ((bootdev = ofw_open(device)) == -1) {
- printf("domount: can't open device\n");
- return (-1);
- }
- if (fsread(0, NULL, 0)) {
- if (!quiet)
- printf("domount: can't read superblock\n");
- return (-1);
- }
- return (0);
-}
-
-static void
-load(const char *fname)
-{
- Elf32_Ehdr eh;
- Elf32_Phdr ph;
- caddr_t p;
- ufs_ino_t ino;
- int i;
-
- if ((ino = lookup(fname)) == 0) {
- printf("File %s not found\n", fname);
- return;
- }
- if (fsread(ino, &eh, sizeof(eh)) != sizeof(eh)) {
- printf("Can't read elf header\n");
- return;
- }
- if (!IS_ELF(eh)) {
- printf("Not an ELF file\n");
- return;
- }
- for (i = 0; i < eh.e_phnum; i++) {
- fs_off = eh.e_phoff + i * eh.e_phentsize;
- if (fsread(ino, &ph, sizeof(ph)) != sizeof(ph)) {
- printf("Can't read program header %d\n", i);
- return;
- }
- if (ph.p_type != PT_LOAD)
- continue;
- fs_off = ph.p_offset;
- p = (caddr_t)ph.p_vaddr;
- ofw_claim(p,(ph.p_filesz > ph.p_memsz) ?
- ph.p_filesz : ph.p_memsz,0);
- if (fsread(ino, p, ph.p_filesz) != ph.p_filesz) {
- printf("Can't read content of section %d\n", i);
- return;
- }
- if (ph.p_filesz != ph.p_memsz)
- bzero(p + ph.p_filesz, ph.p_memsz - ph.p_filesz);
- __syncicache(p, ph.p_memsz);
- }
- ofw_close(bootdev);
- (*(void (*)(void *, int, ofwfp_t, char *, int))eh.e_entry)(NULL, 0,
- ofw,NULL,0);
-}
-
-static int
-dskread(void *buf, u_int64_t lba, int nblk)
-{
- /*
- * The Open Firmware should open the correct partition for us.
- * That means, if we read from offset zero on an open instance handle,
- * we should read from offset zero of that partition.
- */
- ofw_seek(bootdev, lba * DEV_BSIZE);
- ofw_read(bootdev, buf, nblk * DEV_BSIZE);
- return (0);
-}
-
-static void
-panic(const char *fmt, ...)
-{
- char buf[128];
- va_list ap;
-
- va_start(ap, fmt);
- vsnprintf(buf, sizeof buf, fmt, ap);
- printf("panic: %s\n", buf);
- va_end(ap);
-
- exit(1);
-}
-
-static int
-printf(const char *fmt, ...)
-{
- va_list ap;
- int ret;
-
- va_start(ap, fmt);
- ret = vprintf(fmt, ap);
- va_end(ap);
- return (ret);
-}
-
-static int
-putchar(char c, void *arg)
-{
- char buf;
-
- if (c == '\n') {
- buf = '\r';
- ofw_write(stdouth, &buf, 1);
- }
- buf = c;
- ofw_write(stdouth, &buf, 1);
- return (1);
-}
-
-static int
-vprintf(const char *fmt, va_list ap)
-{
- int ret;
-
- ret = __printf(fmt, putchar, 0, ap);
- return (ret);
-}
-
-static int
-vsnprintf(char *str, size_t sz, const char *fmt, va_list ap)
-{
- struct sp_data sp;
- int ret;
-
- sp.sp_buf = str;
- sp.sp_len = 0;
- sp.sp_size = sz;
- ret = __printf(fmt, __sputc, &sp, ap);
- return (ret);
-}
-
-static int
-__printf(const char *fmt, putc_func_t *putc, void *arg, va_list ap)
-{
- char buf[(sizeof(long) * 8) + 1];
- char *nbuf;
- u_long ul;
- u_int ui;
- int lflag;
- int sflag;
- char *s;
- int pad;
- int ret;
- int c;
-
- nbuf = &buf[sizeof buf - 1];
- ret = 0;
- while ((c = *fmt++) != 0) {
- if (c != '%') {
- ret += putc(c, arg);
- continue;
- }
- lflag = 0;
- sflag = 0;
- pad = 0;
-reswitch: c = *fmt++;
- switch (c) {
- case '#':
- sflag = 1;
- goto reswitch;
- case '%':
- ret += putc('%', arg);
- break;
- case 'c':
- c = va_arg(ap, int);
- ret += putc(c, arg);
- break;
- case 'd':
- if (lflag == 0) {
- ui = (u_int)va_arg(ap, int);
- if (ui < (int)ui) {
- ui = -ui;
- ret += putc('-', arg);
- }
- s = __uitoa(nbuf, ui, 10);
- } else {
- ul = (u_long)va_arg(ap, long);
- if (ul < (long)ul) {
- ul = -ul;
- ret += putc('-', arg);
- }
- s = __ultoa(nbuf, ul, 10);
- }
- ret += __puts(s, putc, arg);
- break;
- case 'l':
- lflag = 1;
- goto reswitch;
- case 'o':
- if (lflag == 0) {
- ui = (u_int)va_arg(ap, u_int);
- s = __uitoa(nbuf, ui, 8);
- } else {
- ul = (u_long)va_arg(ap, u_long);
- s = __ultoa(nbuf, ul, 8);
- }
- ret += __puts(s, putc, arg);
- break;
- case 'p':
- ul = (u_long)va_arg(ap, void *);
- s = __ultoa(nbuf, ul, 16);
- ret += __puts("0x", putc, arg);
- ret += __puts(s, putc, arg);
- break;
- case 's':
- s = va_arg(ap, char *);
- ret += __puts(s, putc, arg);
- break;
- case 'u':
- if (lflag == 0) {
- ui = va_arg(ap, u_int);
- s = __uitoa(nbuf, ui, 10);
- } else {
- ul = va_arg(ap, u_long);
- s = __ultoa(nbuf, ul, 10);
- }
- ret += __puts(s, putc, arg);
- break;
- case 'x':
- if (lflag == 0) {
- ui = va_arg(ap, u_int);
- s = __uitoa(nbuf, ui, 16);
- } else {
- ul = va_arg(ap, u_long);
- s = __ultoa(nbuf, ul, 16);
- }
- if (sflag)
- ret += __puts("0x", putc, arg);
- ret += __puts(s, putc, arg);
- break;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- pad = pad * 10 + c - '0';
- goto reswitch;
- default:
- break;
- }
- }
- return (ret);
-}
-
-static int
-__sputc(char c, void *arg)
-{
- struct sp_data *sp;
-
- sp = arg;
- if (sp->sp_len < sp->sp_size)
- sp->sp_buf[sp->sp_len++] = c;
- sp->sp_buf[sp->sp_len] = '\0';
- return (1);
-}
-
-static int
-__puts(const char *s, putc_func_t *putc, void *arg)
-{
- const char *p;
- int ret;
-
- ret = 0;
- for (p = s; *p != '\0'; p++)
- ret += putc(*p, arg);
- return (ret);
-}
-
-static char *
-__uitoa(char *buf, u_int ui, int base)
-{
- char *p;
-
- p = buf;
- *p = '\0';
- do
- *--p = digits[ui % base];
- while ((ui /= base) != 0);
- return (p);
-}
-
-static char *
-__ultoa(char *buf, u_long ul, int base)
-{
- char *p;
-
- p = buf;
- *p = '\0';
- do
- *--p = digits[ul % base];
- while ((ul /= base) != 0);
- return (p);
-}
diff --git a/sys/boot/powerpc/boot1.chrp/bootinfo.txt b/sys/boot/powerpc/boot1.chrp/bootinfo.txt
deleted file mode 100644
index 61cf0079fa6f..000000000000
--- a/sys/boot/powerpc/boot1.chrp/bootinfo.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-<CHRP-BOOT>
-<DESCRIPTION>FreeBSD/powerpc bootloader</DESCRIPTION>
-<OS-NAME>FreeBSD</OS-NAME>
-<VERSION> $FreeBSD$ </VERSION>
-
-<COMPATIBLE>
-MacRISC MacRISC3 MacRISC4
-</COMPATIBLE>
-<BOOT-SCRIPT>
-" screen" output
-boot &device;:&partition;,\ppc\boot1.elf
-</BOOT-SCRIPT>
-</CHRP-BOOT>
-
diff --git a/sys/boot/powerpc/boot1.chrp/generate-hfs.sh b/sys/boot/powerpc/boot1.chrp/generate-hfs.sh
deleted file mode 100755
index ef368d1566b4..000000000000
--- a/sys/boot/powerpc/boot1.chrp/generate-hfs.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-
-# This script generates the dummy HFS filesystem used for the PowerPC boot
-# blocks. It uses hfsutils (emulators/hfsutils) to generate a template
-# filesystem with the relevant interesting files. These are then found by
-# grep, and the offsets written to a Makefile snippet.
-#
-# Because of licensing concerns, and because it is overkill, we do not
-# distribute hfsutils as a build tool. If you need to regenerate the HFS
-# template (e.g. because the boot block or the CHRP script have grown),
-# you must install it from ports.
-
-# $FreeBSD$
-
-HFS_SIZE=1600 #Size in 512-byte blocks of the produced image
-
-CHRPBOOT_SIZE=2k
-BOOT1_SIZE=64k
-
-# Generate 800K HFS image
-OUTPUT_FILE=hfs.tmpl
-
-dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$HFS_SIZE
-hformat -l "FreeBSD Bootstrap" $OUTPUT_FILE
-hmount $OUTPUT_FILE
-
-# Create and bless a directory for the boot loader
-hmkdir ppc
-hattrib -b ppc
-hcd ppc
-
-# Make two dummy files for the CHRP boot script and boot1
-echo 'Bootinfo START' | dd of=bootinfo.txt.tmp cbs=$CHRPBOOT_SIZE count=1 conv=block
-echo 'Boot1 START' | dd of=boot1.elf.tmp cbs=$BOOT1_SIZE count=1 conv=block
-
-hcopy boot1.elf.tmp :boot1.elf
-hcopy bootinfo.txt.tmp :bootinfo.txt
-hattrib -c chrp -t tbxi bootinfo.txt
-humount
-
-rm bootinfo.txt.tmp
-rm boot1.elf.tmp
-
-# Locate the offsets of the two fake files
-BOOTINFO_OFFSET=$(hd $OUTPUT_FILE | grep 'Bootinfo START' | cut -f 1 -d ' ')
-BOOT1_OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
-
-# Convert to numbers of blocks
-BOOTINFO_OFFSET=$(echo 0x$BOOTINFO_OFFSET | awk '{printf("%x\n",$1/512);}')
-BOOT1_OFFSET=$(echo 0x$BOOT1_OFFSET | awk '{printf("%x\n",$1/512);}')
-
-echo '# This file autogenerated by generate-hfs.sh - DO NOT EDIT' > Makefile.hfs
-echo '# $FreeBSD$' >> Makefile.hfs
-echo "BOOTINFO_OFFSET=0x$BOOTINFO_OFFSET" >> Makefile.hfs
-echo "BOOT1_OFFSET=0x$BOOT1_OFFSET" >> Makefile.hfs
-
-bzip2 $OUTPUT_FILE
-echo 'HFS template boot filesystem created by generate-hfs.sh' > $OUTPUT_FILE.bz2.uu
-echo 'DO NOT EDIT' >> $OUTPUT_FILE.bz2.uu
-echo '$FreeBSD$' >> $OUTPUT_FILE.bz2.uu
-
-uuencode $OUTPUT_FILE.bz2 $OUTPUT_FILE.bz2 >> $OUTPUT_FILE.bz2.uu
-rm $OUTPUT_FILE.bz2
-
diff --git a/sys/boot/powerpc/boot1.chrp/hfs.tmpl.bz2.uu b/sys/boot/powerpc/boot1.chrp/hfs.tmpl.bz2.uu
deleted file mode 100644
index 20b7695e6db4..000000000000
--- a/sys/boot/powerpc/boot1.chrp/hfs.tmpl.bz2.uu
+++ /dev/null
@@ -1,18 +0,0 @@
-HFS template boot filesystem created by generate-hfs.sh
-DO NOT EDIT
-$FreeBSD$
-begin 644 hfs.tmpl.bz2
-M0EIH.3%!629365^MV6L``"]__O___M)20>!0O2$>0#MUW$!$``%%$``@``!`
-M!`!R2<`![@H2"2A2-Z)-HC]4`:`-``T:&@&@#0/TTH<`PC":8A@$`R`&$:9,
-MF$8"&AP#",)IB&`0#(`81IDR81@(:")0HT*>4,:0TT`:!ZC0/*/4/1&@;4>H
-M&@RYG-FL-,\=C91FTSS@99`O+OA;*$ZN3-&UF`W@#SP:;MVF_EN,-]P$ZN2B
-M=";7YHA7VT!#<@,B`H*?S#?Q;CUJ8H8+9:E)+4"L7'CL5&D.IO4;H98%^4@[
-M9`*L&1``5*0#A(E<M\J&(@6BZXC<0K!#!)!H05`5*L!^DNM12_"L`<9!Y.7T
-M<I94[[MT$^$30P-DYBVI.X7R<KY7&H$DA(<S;NW1PB7-47*Q>B8BH`S'1O^N
-M)Y6'!#N:*:<E!+,#/,\;M_FXRP![+P44D6],L'G1X7Q&[JI6WN@&KCIW8:".
-MTP=Y77`%67""`=I/UR500#!=DD+!>JYTEX\:%'"?.G$FCP8TM_0/ND`^IG3[
-M.QUEDP&P>3+Z442Q!:S.A1>00]'X'D%)UX9QZ>$Q?(808QB-4%9BBTL"L(BB
-MEJ*'HH820Q$'%G':JF.:>$U4H`0S`:GSZM-C5BNX(2&$B"J*45`"4FEZ__%W
-))%.%"07ZW9:P
-`
-end
diff --git a/sys/boot/powerpc/kboot/Makefile b/sys/boot/powerpc/kboot/Makefile
deleted file mode 100644
index bed586e6732a..000000000000
--- a/sys/boot/powerpc/kboot/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-# $FreeBSD$
-
-LOADER_CD9660_SUPPORT?= yes
-LOADER_MSDOS_SUPPORT?= no
-LOADER_EXT2FS_SUPPORT?= yes
-LOADER_UFS_SUPPORT?= yes
-LOADER_NET_SUPPORT?= yes
-LOADER_NFS_SUPPORT?= yes
-LOADER_TFTP_SUPPORT?= no
-LOADER_GZIP_SUPPORT?= yes
-LOADER_BZIP2_SUPPORT?= no
-
-.include <bsd.init.mk>
-MK_SSP= no
-MAN=
-
-PROG= loader.kboot
-NEWVERSWHAT= "kboot loader" ${MACHINE_ARCH}
-INSTALLFLAGS= -b
-
-# Architecture-specific loader code
-SRCS= conf.c metadata.c vers.c main.c ppc64_elf_freebsd.c
-SRCS+= host_syscall.S hostcons.c hostdisk.c kerneltramp.S kbootfdt.c
-SRCS+= ucmpdi2.c
-
-.include "${BOOTSRC}/fdt.mk"
-
-CFLAGS+= -mcpu=powerpc64
-
-# Always add MI sources
-HELP_FILES= # Disable
-.include "${BOOTSRC}/loader.mk"
-.PATH: ${SYSDIR}/libkern
-
-CFLAGS+= -Wall -ffreestanding -msoft-float -DAIM
-# load address. set in linker script
-RELOC?= 0x0
-CFLAGS+= -DRELOC=${RELOC}
-
-LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc
-
-# 64-bit bridge extensions
-CFLAGS+= -Wa,-mppc64bridge
-
-DPADD= ${LIBFICL} ${LIBOFW} ${LIBFDT} ${LIBSA}
-LDADD= ${LIBFICL} ${LIBOFW} ${LIBFDT} ${LIBSA}
-
-HELP_FILES+= ${FDTSRC}/help.fdt
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/powerpc/kboot/conf.c b/sys/boot/powerpc/kboot/conf.c
deleted file mode 100644
index 104dd93ca2fb..000000000000
--- a/sys/boot/powerpc/kboot/conf.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*-
- * Copyright (C) 1999 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "bootstrap.h"
-
-#if defined(LOADER_NET_SUPPORT)
-#include "dev_net.h"
-#endif
-
-extern struct devsw hostdisk;
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
-#if defined(LOADER_DISK_SUPPORT) || defined(LOADER_CD9660_SUPPORT)
- &hostdisk,
-#endif
-#if defined(LOADER_NET_SUPPORT)
- &netdev,
-#endif
- NULL
-};
-
-struct fs_ops *file_system[] = {
-#if defined(LOADER_UFS_SUPPORT)
- &ufs_fsops,
-#endif
-#if defined(LOADER_CD9660_SUPPORT)
- &cd9660_fsops,
-#endif
-#if defined(LOADER_EXT2FS_SUPPORT)
- &ext2fs_fsops,
-#endif
-#if defined(LOADER_NFS_SUPPORT)
- &nfs_fsops,
-#endif
-#if defined(LOADER_TFTP_SUPPORT)
- &tftp_fsops,
-#endif
-#if defined(LOADER_GZIP_SUPPORT)
- &gzipfs_fsops,
-#endif
-#if defined(LOADER_BZIP2_SUPPORT)
- &bzipfs_fsops,
-#endif
- NULL
-};
-
-extern struct netif_driver kbootnet;
-
-struct netif_driver *netif_drivers[] = {
-#if 0 /* XXX */
-#if defined(LOADER_NET_SUPPORT)
- &kbootnet,
-#endif
-#endif
- NULL,
-};
-
-/* Exported for PowerPC only */
-/*
- * Sort formats so that those that can detect based on arguments
- * rather than reading the file go first.
- */
-
-extern struct file_format ppc_elf64;
-
-struct file_format *file_formats[] = {
- &ppc_elf64,
- NULL
-};
-
-/*
- * Consoles
- */
-extern struct console hostconsole;
-
-struct console *consoles[] = {
- &hostconsole,
- NULL
-};
-
diff --git a/sys/boot/powerpc/kboot/host_syscall.S b/sys/boot/powerpc/kboot/host_syscall.S
deleted file mode 100644
index 3607fdb0d2a1..000000000000
--- a/sys/boot/powerpc/kboot/host_syscall.S
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
-ENTRY(host_read)
- li %r0, 3 # SYS_read
- sc
- bso 1f
- blr
-1:
- li %r3, 0
- blr
-
-
-ENTRY(host_write)
- li %r0, 4 # SYS_write
- sc
- blr
-
-ENTRY(host_seek)
- mr %r4,%r5
- mr %r5,%r6
- mr %r6,%r7
- li %r0, 140 # SYS_llseek
- sc
- blr
-
-ENTRY(host_open)
- li %r0, 5 # SYS_open
- sc
- bso 1f
- blr
-1:
- li %r3, 0
- blr
-
-ENTRY(host_close)
- li %r0, 6 # SYS_close
- sc
- blr
-
-ENTRY(host_mmap)
- li %r0, 90 # SYS_mmap
- sc
- blr
-
-ENTRY(host_gettimeofday)
- li %r0, 78 # SYS_gettimeofday
- sc
- blr
-
-ENTRY(host_select)
- li %r0, 142 # SYS_select
- sc
- blr
-
-ENTRY(kexec_load)
- lis %r6,21 # KEXEC_ARCH_PPC64
- li %r0,268 # __NR_kexec_load
- sc
- blr
-
-ENTRY(host_reboot)
- li %r0,88 # SYS_reboot
- sc
- blr
-
-ENTRY(host_getdents)
- li %r0,141 # SYS_getdents
- sc
- blr
-
diff --git a/sys/boot/powerpc/kboot/host_syscall.h b/sys/boot/powerpc/kboot/host_syscall.h
deleted file mode 100644
index 0d47bd58a44a..000000000000
--- a/sys/boot/powerpc/kboot/host_syscall.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * Copyright (C) 2014 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _HOST_SYSCALL_H
-#define _HOST_SYSCALL_H
-
-#include <stand.h>
-
-ssize_t host_read(int fd, void *buf, size_t nbyte);
-ssize_t host_write(int fd, const void *buf, size_t nbyte);
-ssize_t host_seek(int fd, int64_t offset, int whence);
-int host_open(char *path, int flags, int mode);
-int host_close(int fd);
-void *host_mmap(void *addr, size_t len, int prot, int flags, int fd, int);
-#define host_getmem(size) host_mmap(0, size, 3 /* RW */, 0x22 /* ANON */, -1, 0);
-struct host_timeval {
- int tv_sec;
- int tv_usec;
-};
-int host_gettimeofday(struct host_timeval *a, void *b);
-int host_select(int nfds, long *readfds, long *writefds, long *exceptfds,
- struct host_timeval *timeout);
-int kexec_load(vm_offset_t start, int nsegs, void *segs);
-int host_reboot(int, int, int, void *);
-int host_getdents(int fd, void *dirp, int count);
-
-#endif
diff --git a/sys/boot/powerpc/kboot/hostcons.c b/sys/boot/powerpc/kboot/hostcons.c
deleted file mode 100644
index 31dceb019973..000000000000
--- a/sys/boot/powerpc/kboot/hostcons.c
+++ /dev/null
@@ -1,97 +0,0 @@
-/*-
- * Copyright (C) 2014 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include "bootstrap.h"
-#include "host_syscall.h"
-
-static void hostcons_probe(struct console *cp);
-static int hostcons_init(int arg);
-static void hostcons_putchar(int c);
-static int hostcons_getchar();
-static int hostcons_poll();
-
-struct console hostconsole = {
- "host",
- "Host Console",
- 0,
- hostcons_probe,
- hostcons_init,
- hostcons_putchar,
- hostcons_getchar,
- hostcons_poll,
-};
-
-static void
-hostcons_probe(struct console *cp)
-{
-
- cp->c_flags |= C_PRESENTIN|C_PRESENTOUT;
-}
-
-static int
-hostcons_init(int arg)
-{
-
- /* XXX: set nonblocking */
- /* tcsetattr(~(ICANON | ECHO)) */
-
- return (0);
-}
-
-static void
-hostcons_putchar(int c)
-{
- uint8_t ch = c;
-
- host_write(1, &ch, 1);
-}
-
-static int
-hostcons_getchar()
-{
- uint8_t ch;
- int rv;
-
- rv = host_read(0, &ch, 1);
- if (rv == 1)
- return (ch);
- return (-1);
-}
-
-static int
-hostcons_poll()
-{
- struct host_timeval tv = {0,0};
- long fds = 1 << 0;
- int ret;
-
- ret = host_select(32, &fds, NULL, NULL, &tv);
- return (ret > 0);
-}
-
diff --git a/sys/boot/powerpc/kboot/hostdisk.c b/sys/boot/powerpc/kboot/hostdisk.c
deleted file mode 100644
index 22f540674cc1..000000000000
--- a/sys/boot/powerpc/kboot/hostdisk.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*-
- * Copyright (C) 2014 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <stdarg.h>
-#include "bootstrap.h"
-#include "host_syscall.h"
-
-static int hostdisk_init(void);
-static int hostdisk_strategy(void *devdata, int flag, daddr_t dblk,
- size_t size, char *buf, size_t *rsize);
-static int hostdisk_open(struct open_file *f, ...);
-static int hostdisk_close(struct open_file *f);
-static int hostdisk_ioctl(struct open_file *f, u_long cmd, void *data);
-static int hostdisk_print(int verbose);
-
-struct devsw hostdisk = {
- "/dev",
- DEVT_DISK,
- hostdisk_init,
- hostdisk_strategy,
- hostdisk_open,
- hostdisk_close,
- hostdisk_ioctl,
- hostdisk_print,
-};
-
-static int
-hostdisk_init(void)
-{
-
- return (0);
-}
-
-static int
-hostdisk_strategy(void *devdata, int flag, daddr_t dblk, size_t size,
- char *buf, size_t *rsize)
-{
- struct devdesc *desc = devdata;
- daddr_t pos;
- int n;
-
- pos = dblk * 512;
-
- if (host_seek(desc->d_unit, pos, 0) < 0) {
- printf("Seek error\n");
- return (EIO);
- }
- n = host_read(desc->d_unit, buf, size);
-
- if (n < 0)
- return (EIO);
-
- *rsize = n;
- return (0);
-}
-
-static int
-hostdisk_open(struct open_file *f, ...)
-{
- struct devdesc *desc;
- va_list vl;
-
- va_start(vl, f);
- desc = va_arg(vl, struct devdesc *);
- va_end(vl);
-
- desc->d_unit = host_open(desc->d_opendata, O_RDONLY, 0);
-
- if (desc->d_unit <= 0) {
- printf("hostdisk_open: couldn't open %s: %d\n",
- desc->d_opendata, desc->d_unit);
- return (ENOENT);
- }
-
- return (0);
-}
-
-static int
-hostdisk_close(struct open_file *f)
-{
- struct devdesc *desc = f->f_devdata;
-
- host_close(desc->d_unit);
- return (0);
-}
-
-static int
-hostdisk_ioctl(struct open_file *f, u_long cmd, void *data)
-{
-
- return (EINVAL);
-}
-
-static int
-hostdisk_print(int verbose)
-{
- return (0);
-}
-
diff --git a/sys/boot/powerpc/kboot/kbootfdt.c b/sys/boot/powerpc/kboot/kbootfdt.c
deleted file mode 100644
index 5ab3c3da43c9..000000000000
--- a/sys/boot/powerpc/kboot/kbootfdt.c
+++ /dev/null
@@ -1,184 +0,0 @@
-/*-
- * Copyright (C) 2014 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <fdt_platform.h>
-#include <libfdt.h>
-#include "bootstrap.h"
-#include "host_syscall.h"
-
-static void
-add_node_to_fdt(void *buffer, const char *path, int fdt_offset)
-{
- int child_offset, fd, pfd, error, dentsize;
- char subpath[512];
- void *propbuf;
- ssize_t proplen;
-
- struct host_dent {
- unsigned long d_fileno;
- unsigned long d_off;
- unsigned short d_reclen;
- char d_name[];
- /* uint8_t d_type; */
- };
- char dents[2048];
- struct host_dent *dent;
- int d_type;
-
- fd = host_open(path, O_RDONLY, 0);
- while (1) {
- dentsize = host_getdents(fd, dents, sizeof(dents));
- if (dentsize <= 0)
- break;
- for (dent = (struct host_dent *)dents;
- (char *)dent < dents + dentsize;
- dent = (struct host_dent *)((void *)dent + dent->d_reclen)) {
- sprintf(subpath, "%s/%s", path, dent->d_name);
- if (strcmp(dent->d_name, ".") == 0 ||
- strcmp(dent->d_name, "..") == 0)
- continue;
- d_type = *((char *)(dent) + dent->d_reclen - 1);
- if (d_type == 4 /* DT_DIR */) {
- child_offset = fdt_add_subnode(buffer, fdt_offset,
- dent->d_name);
- if (child_offset < 0) {
- printf("Error %d adding node %s/%s, skipping\n",
- child_offset, path, dent->d_name);
- continue;
- }
-
- add_node_to_fdt(buffer, subpath, child_offset);
- } else {
- propbuf = malloc(1024);
- proplen = 0;
- pfd = host_open(subpath, O_RDONLY, 0);
- if (pfd > 0) {
- proplen = host_read(pfd, propbuf, 1024);
- host_close(pfd);
- }
- error = fdt_setprop(buffer, fdt_offset, dent->d_name,
- propbuf, proplen);
- free(propbuf);
- if (error)
- printf("Error %d adding property %s to "
- "node %d\n", error, dent->d_name,
- fdt_offset);
- }
- }
- }
-
- host_close(fd);
-}
-
-/* Fix up wrong values added to the device tree by prom_init() in Linux */
-
-static void
-fdt_linux_fixups(void *fdtp)
-{
- int offset, len;
- const void *prop;
-
- /*
- * Remove /memory/available properties, which reflect long-gone OF
- * state
- */
-
- offset = fdt_path_offset(fdtp, "/memory@0");
- if (offset > 0)
- fdt_delprop(fdtp, offset, "available");
-
- /*
- * Add reservations for OPAL and RTAS state if present
- */
-
- offset = fdt_path_offset(fdtp, "/ibm,opal");
- if (offset > 0) {
- uint64_t *base, *size;
- base = fdt_getprop(fdtp, offset, "opal-base-address",
- &len);
- size = fdt_getprop(fdtp, offset, "opal-runtime-size",
- &len);
- if (base != NULL && size != NULL)
- fdt_add_mem_rsv(fdtp, fdt64_to_cpu(*base),
- fdt64_to_cpu(*size));
- }
- offset = fdt_path_offset(fdtp, "/rtas");
- if (offset > 0) {
- uint32_t *base, *size;
- base = fdt_getprop(fdtp, offset, "linux,rtas-base", &len);
- size = fdt_getprop(fdtp, offset, "rtas-size", &len);
- if (base != NULL && size != NULL)
- fdt_add_mem_rsv(fdtp, fdt32_to_cpu(*base),
- fdt32_to_cpu(*size));
- }
-
- /*
- * Patch up /chosen nodes so that the stored handles mean something,
- * where possible.
- */
- offset = fdt_path_offset(fdtp, "/chosen");
- if (offset > 0) {
- fdt_delprop(fdtp, offset, "cpu"); /* This node not meaningful */
-
- offset = fdt_path_offset(fdtp, "/chosen");
- prop = fdt_getprop(fdtp, offset, "linux,stdout-package", &len);
- if (prop != NULL) {
- fdt_setprop(fdtp, offset, "stdout", prop, len);
- offset = fdt_path_offset(fdtp, "/chosen");
- fdt_setprop(fdtp, offset, "stdin", prop, len);
- }
- }
-}
-
-int
-fdt_platform_load_dtb(void)
-{
- void *buffer;
- size_t buflen = 409600;
-
- buffer = malloc(buflen);
- fdt_create_empty_tree(buffer, buflen);
- add_node_to_fdt(buffer, "/proc/device-tree",
- fdt_path_offset(buffer, "/"));
- fdt_linux_fixups(buffer);
-
- fdt_pack(buffer);
-
- fdt_load_dtb_addr(buffer);
- free(buffer);
-
- return (0);
-}
-
-void
-fdt_platform_fixups(void)
-{
-
-}
-
diff --git a/sys/boot/powerpc/kboot/kerneltramp.S b/sys/boot/powerpc/kboot/kerneltramp.S
deleted file mode 100644
index a394c9554f30..000000000000
--- a/sys/boot/powerpc/kboot/kerneltramp.S
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * This is the analog to the kexec "purgatory" code
- *
- * The goal here is to call the actual kernel entry point with the arguments it
- * expects when kexec calls into it with no arguments. The value of the kernel
- * entry point and arguments r3-r7 are copied into the trampoline text (which
- * can be executed from any address) at bytes 8-32. kexec begins execution
- * of APs at 0x60 bytes past the entry point, executing in a copy relocated
- * to the absolute address 0x60. Here we implement a loop waiting on the release
- * of a lock by the kernel at 0x40.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
- .globl CNAME(kerneltramp),CNAME(szkerneltramp)
-CNAME(kerneltramp):
- mflr %r9
- bl 2f
- .space 24 /* branch address, r3-r7 */
-
-. = kerneltramp + 0x40 /* AP spinlock */
- .long 0
-
-. = kerneltramp + 0x60 /* AP entry point */
- li %r3,0x40
-1: lwz %r1,0(%r3)
- cmpwi %r1,0
- beq 1b
-
- /* Jump into CPU reset */
- li %r0,0x100
- icbi 0,%r0
- isync
- sync
- ba 0x100
-
-2: /* Continuation of kerneltramp */
- mflr %r8
- mtlr %r9
- lwz %r3,0(%r8)
- mtctr %r3
- lwz %r3,4(%r8)
- lwz %r4,8(%r8)
- lwz %r5,12(%r8)
- lwz %r6,16(%r8)
- lwz %r7,20(%r8)
- bctr
-
-endkerneltramp:
-
- .data
-CNAME(szkerneltramp):
- .long endkerneltramp - CNAME(kerneltramp)
diff --git a/sys/boot/powerpc/kboot/ldscript.powerpc b/sys/boot/powerpc/kboot/ldscript.powerpc
deleted file mode 100644
index 729113695105..000000000000
--- a/sys/boot/powerpc/kboot/ldscript.powerpc
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $FreeBSD: user/nwhitehorn/kboot/powerpc/kboot/ldscript.powerpc 272888 2014-10-10 06:24:09Z bapt $ */
-
-OUTPUT_FORMAT("elf32-powerpc-freebsd", "elf32-powerpc-freebsd",
- "elf32-powerpc-freebsd")
-OUTPUT_ARCH(powerpc:common)
-ENTRY(_start)
-SEARCH_DIR(/usr/lib);
-PROVIDE (__stack = 0);
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0x100000;
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- .interp : { *(.interp) }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rela.text :
- { *(.rela.text) *(.rela.gnu.linkonce.t*) }
- .rela.data :
- { *(.rela.data) *(.rela.gnu.linkonce.d*) }
- .rela.rodata :
- { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
- .rela.got : { *(.rela.got) }
- .rela.got1 : { *(.rela.got1) }
- .rela.got2 : { *(.rela.got2) }
- .rela.ctors : { *(.rela.ctors) }
- .rela.dtors : { *(.rela.dtors) }
- .rela.init : { *(.rela.init) }
- .rela.fini : { *(.rela.fini) }
- .rela.bss : { *(.rela.bss) }
- .rela.plt : { *(.rela.plt) }
- .rela.sbss : { *(.rela.sbss) }
- .rela.sbss2 : { *(.rela.sbss2) }
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- PROVIDE (etext = .);
- .init : { *(.init) } =0
- .fini : { *(.fini) } =0
- .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
- .rodata1 : { *(.rodata1) }
- .sbss2 : { *(.sbss2) }
- /* Adjust the address for the data segment to the next page up. */
- . = ((. + 0x1000) & ~(0x1000 - 1));
- .data :
- {
- *(.data)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- .got1 : { *(.got1) }
- .dynamic : { *(.dynamic) }
- /* Put .ctors and .dtors next to the .got2 section, so that the pointers
- get relocated with -mrelocatable. Also put in the .fixup pointers.
- The current compiler no longer needs this, but keep it around for 2.7.2 */
- PROVIDE (_GOT2_START_ = .);
- .got2 : { *(.got2) }
- PROVIDE (__CTOR_LIST__ = .);
- .ctors : { *(.ctors) }
- PROVIDE (__CTOR_END__ = .);
- PROVIDE (__DTOR_LIST__ = .);
- .dtors : { *(.dtors) }
- PROVIDE (__DTOR_END__ = .);
- PROVIDE (_FIXUP_START_ = .);
- .fixup : { *(.fixup) }
- PROVIDE (_FIXUP_END_ = .);
- PROVIDE (_GOT2_END_ = .);
- PROVIDE (_GOT_START_ = .);
- .got : { *(.got) }
- .got.plt : { *(.got.plt) }
- PROVIDE (_GOT_END_ = .);
- _edata = .;
- PROVIDE (edata = .);
- .sbss :
- {
- PROVIDE (__sbss_start = .);
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- PROVIDE (__sbss_end = .);
- }
- .plt : { *(.plt) }
- .bss :
- {
- PROVIDE (__bss_start = .);
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- . = ALIGN(4096);
- _end = . ;
- PROVIDE (end = .);
-}
-
diff --git a/sys/boot/powerpc/kboot/main.c b/sys/boot/powerpc/kboot/main.c
deleted file mode 100644
index 7a24c163d5c4..000000000000
--- a/sys/boot/powerpc/kboot/main.c
+++ /dev/null
@@ -1,319 +0,0 @@
-/*-
- * Copyright (C) 2010-2014 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-#include <fdt_platform.h>
-
-#define _KERNEL
-#include <machine/cpufunc.h>
-#include "bootstrap.h"
-#include "host_syscall.h"
-
-struct arch_switch archsw;
-extern void *_end;
-
-extern char bootprog_info[];
-
-int kboot_getdev(void **vdev, const char *devspec, const char **path);
-ssize_t kboot_copyin(const void *src, vm_offset_t dest, const size_t len);
-ssize_t kboot_copyout(vm_offset_t src, void *dest, const size_t len);
-ssize_t kboot_readin(const int fd, vm_offset_t dest, const size_t len);
-int kboot_autoload(void);
-uint64_t kboot_loadaddr(u_int type, void *data, uint64_t addr);
-int kboot_setcurrdev(struct env_var *ev, int flags, const void *value);
-
-extern int command_fdt_internal(int argc, char *argv[]);
-
-int
-kboot_getdev(void **vdev, const char *devspec, const char **path)
-{
- int i;
- const char *devpath, *filepath;
- struct devsw *dv;
- struct devdesc *desc;
-
- if (strchr(devspec, ':') != NULL) {
- devpath = devspec;
- filepath = strchr(devspec, ':') + 1;
- } else {
- devpath = getenv("currdev");
- filepath = devspec;
- }
-
- for (i = 0; (dv = devsw[i]) != NULL; i++) {
- if (strncmp(dv->dv_name, devpath, strlen(dv->dv_name)) == 0)
- goto found;
- }
- return (ENOENT);
-
-found:
- if (path != NULL && filepath != NULL)
- *path = filepath;
- else if (path != NULL)
- *path = strchr(devspec, ':') + 1;
-
- if (vdev != NULL) {
- desc = malloc(sizeof(*desc));
- desc->d_dev = dv;
- desc->d_unit = 0;
- desc->d_opendata = strdup(devpath);
- *vdev = desc;
- }
-
- return (0);
-}
-
-int
-main(int argc, const char **argv)
-{
- void *heapbase;
- const size_t heapsize = 15*1024*1024;
- const char *bootdev = argv[1];
-
- /*
- * Set the heap to one page after the end of the loader.
- */
- heapbase = host_getmem(heapsize);
- setheap(heapbase, heapbase + heapsize);
-
- /*
- * Set up console.
- */
- cons_probe();
-
- printf("Boot device: %s\n", bootdev);
-
- archsw.arch_getdev = kboot_getdev;
- archsw.arch_copyin = kboot_copyin;
- archsw.arch_copyout = kboot_copyout;
- archsw.arch_readin = kboot_readin;
- archsw.arch_autoload = kboot_autoload;
- archsw.arch_loadaddr = kboot_loadaddr;
-
- printf("\n%s", bootprog_info);
-
- setenv("currdev", bootdev, 1);
- setenv("loaddev", bootdev, 1);
- setenv("LINES", "24", 1);
-
- interact(NULL); /* doesn't return */
-
- return (0);
-}
-
-void
-exit(int code)
-{
- /* XXX: host_exit */
-}
-
-void
-delay(int usecs)
-{
- struct host_timeval tvi, tv;
- uint64_t ti, t;
- host_gettimeofday(&tvi, NULL);
- ti = tvi.tv_sec*1000000 + tvi.tv_usec;
- do {
- host_gettimeofday(&tv, NULL);
- t = tv.tv_sec*1000000 + tv.tv_usec;
- } while (t < ti + usecs);
-}
-
-time_t
-getsecs(void)
-{
- struct host_timeval tv;
- host_gettimeofday(&tv, NULL);
- return (tv.tv_sec);
-}
-
-time_t
-time(time_t *tloc)
-{
- time_t rv;
-
- rv = getsecs();
- if (tloc != NULL)
- *tloc = rv;
-
- return (rv);
-}
-
-struct kexec_segment {
- void *buf;
- int bufsz;
- void *mem;
- int memsz;
-};
-
-struct kexec_segment loaded_segments[128];
-int nkexec_segments = 0;
-
-static ssize_t
-get_phys_buffer(vm_offset_t dest, const size_t len, void **buf)
-{
- int i = 0;
- const size_t segsize = 2*1024*1024;
-
- for (i = 0; i < nkexec_segments; i++) {
- if (dest >= (vm_offset_t)loaded_segments[i].mem &&
- dest < (vm_offset_t)loaded_segments[i].mem +
- loaded_segments[i].memsz)
- goto out;
- }
-
- loaded_segments[nkexec_segments].buf = host_getmem(segsize);
- loaded_segments[nkexec_segments].bufsz = segsize;
- loaded_segments[nkexec_segments].mem = (void *)rounddown2(dest,segsize);
- loaded_segments[nkexec_segments].memsz = segsize;
- i = nkexec_segments;
- nkexec_segments++;
-
-out:
- *buf = loaded_segments[i].buf + (dest -
- (vm_offset_t)loaded_segments[i].mem);
- return (min(len,loaded_segments[i].bufsz - (dest -
- (vm_offset_t)loaded_segments[i].mem)));
-}
-
-ssize_t
-kboot_copyin(const void *src, vm_offset_t dest, const size_t len)
-{
- ssize_t segsize, remainder;
- void *destbuf;
-
- remainder = len;
- do {
- segsize = get_phys_buffer(dest, remainder, &destbuf);
- bcopy(src, destbuf, segsize);
- remainder -= segsize;
- src += segsize;
- dest += segsize;
- } while (remainder > 0);
-
- return (len);
-}
-
-ssize_t
-kboot_copyout(vm_offset_t src, void *dest, const size_t len)
-{
- ssize_t segsize, remainder;
- void *srcbuf;
-
- remainder = len;
- do {
- segsize = get_phys_buffer(src, remainder, &srcbuf);
- bcopy(srcbuf, dest, segsize);
- remainder -= segsize;
- src += segsize;
- dest += segsize;
- } while (remainder > 0);
-
- return (len);
-}
-
-ssize_t
-kboot_readin(const int fd, vm_offset_t dest, const size_t len)
-{
- void *buf;
- size_t resid, chunk, get;
- ssize_t got;
- vm_offset_t p;
-
- p = dest;
-
- chunk = min(PAGE_SIZE, len);
- buf = malloc(chunk);
- if (buf == NULL) {
- printf("kboot_readin: buf malloc failed\n");
- return (0);
- }
-
- for (resid = len; resid > 0; resid -= got, p += got) {
- get = min(chunk, resid);
- got = read(fd, buf, get);
- if (got <= 0) {
- if (got < 0)
- printf("kboot_readin: read failed\n");
- break;
- }
-
- kboot_copyin(buf, p, got);
- }
-
- free (buf);
- return (len - resid);
-}
-
-int
-kboot_autoload(void)
-{
-
- return (0);
-}
-
-uint64_t
-kboot_loadaddr(u_int type, void *data, uint64_t addr)
-{
- /*
- * Need to stay out of the way of Linux. /chosen/linux,kernel-end does
- * a better job here, but use a fixed offset for now.
- */
-
- if (type == LOAD_ELF)
- addr = roundup(addr, PAGE_SIZE);
- else
- addr += 64*1024*1024; /* Stay out of the way of Linux */
-
- return (addr);
-}
-
-void
-_start(int argc, const char **argv, char **env)
-{
- register volatile void **sp asm("r1");
- main((int)sp[0], (const char **)&sp[1]);
-}
-
-/*
- * Since proper fdt command handling function is defined in fdt_loader_cmd.c,
- * and declaring it as extern is in contradiction with COMMAND_SET() macro
- * (which uses static pointer), we're defining wrapper function, which
- * calls the proper fdt handling routine.
- */
-static int
-command_fdt(int argc, char *argv[])
-{
-
- return (command_fdt_internal(argc, argv));
-}
-
-COMMAND_SET(fdt, "fdt", "flattened device tree handling", command_fdt);
-
diff --git a/sys/boot/powerpc/kboot/metadata.c b/sys/boot/powerpc/kboot/metadata.c
deleted file mode 100644
index 1e8c314c64e6..000000000000
--- a/sys/boot/powerpc/kboot/metadata.c
+++ /dev/null
@@ -1,343 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- *
- * from: FreeBSD: src/sys/boot/sparc64/loader/metadata.c,v 1.6
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-#include <fdt_platform.h>
-
-#include <machine/metadata.h>
-
-#include "bootstrap.h"
-
-int
-md_getboothowto(char *kargs)
-{
- char *cp;
- int howto;
- int active;
- int i;
-
- /* Parse kargs */
- howto = 0;
- if (kargs != NULL) {
- cp = kargs;
- active = 0;
- while (*cp != 0) {
- if (!active && (*cp == '-')) {
- active = 1;
- } else if (active)
- switch (*cp) {
- case 'a':
- howto |= RB_ASKNAME;
- break;
- case 'C':
- howto |= RB_CDROM;
- break;
- case 'd':
- howto |= RB_KDB;
- break;
- case 'D':
- howto |= RB_MULTIPLE;
- break;
- case 'm':
- howto |= RB_MUTE;
- break;
- case 'g':
- howto |= RB_GDB;
- break;
- case 'h':
- howto |= RB_SERIAL;
- break;
- case 'p':
- howto |= RB_PAUSE;
- break;
- case 'r':
- howto |= RB_DFLTROOT;
- break;
- case 's':
- howto |= RB_SINGLE;
- break;
- case 'v':
- howto |= RB_VERBOSE;
- break;
- default:
- active = 0;
- break;
- }
- cp++;
- }
- }
- /* get equivalents from the environment */
- for (i = 0; howto_names[i].ev != NULL; i++)
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- if (!strcmp(getenv("console"), "comconsole"))
- howto |= RB_SERIAL;
- if (!strcmp(getenv("console"), "nullconsole"))
- howto |= RB_MUTE;
- return(howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-vm_offset_t
-md_copyenv(vm_offset_t addr)
-{
- struct env_var *ep;
-
- /* traverse the environment */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- archsw.arch_copyin(ep->ev_name, addr, strlen(ep->ev_name));
- addr += strlen(ep->ev_name);
- archsw.arch_copyin("=", addr, 1);
- addr++;
- if (ep->ev_value != NULL) {
- archsw.arch_copyin(ep->ev_value, addr, strlen(ep->ev_value));
- addr += strlen(ep->ev_value);
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- return(addr);
-}
-
-/*
- * Copy module-related data into the load area, where it can be
- * used as a directory for loaded modules.
- *
- * Module data is presented in a self-describing format. Each datum
- * is preceded by a 32-bit identifier and a 32-bit size field.
- *
- * Currently, the following data are saved:
- *
- * MOD_NAME (variable) module name (string)
- * MOD_TYPE (variable) module type (string)
- * MOD_ARGS (variable) module parameters (string)
- * MOD_ADDR sizeof(vm_offset_t) module load address
- * MOD_SIZE sizeof(size_t) module size
- * MOD_METADATA (variable) type-specific metadata
- */
-
-static int align;
-
-#define COPY32(v, a, c) { \
- u_int32_t x = (v); \
- if (c) \
- archsw.arch_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(strlen(s) + 1, a, c) \
- if (c) \
- archsw.arch_copyin(s, a, strlen(s) + 1);\
- a += roundup(strlen(s) + 1, align); \
-}
-
-#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c)
-#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c)
-#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c)
-
-#define MOD_VAR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(sizeof(s), a, c); \
- if (c) \
- archsw.arch_copyin(&s, a, sizeof(s)); \
- a += roundup(sizeof(s), align); \
-}
-
-#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c)
-#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c)
-
-#define MOD_METADATA(a, mm, c) { \
- COPY32(MODINFO_METADATA | mm->md_type, a, c);\
- COPY32(mm->md_size, a, c); \
- if (c) \
- archsw.arch_copyin(mm->md_data, a, mm->md_size);\
- a += roundup(mm->md_size, align); \
-}
-
-#define MOD_END(a, c) { \
- COPY32(MODINFO_END, a, c); \
- COPY32(0, a, c); \
-}
-
-vm_offset_t
-md_copymodules(vm_offset_t addr, int kern64)
-{
- struct preloaded_file *fp;
- struct file_metadata *md;
- uint64_t scratch64;
- int c;
-
- c = addr != 0;
- /* start with the first module on the list, should be the kernel */
- for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
-
- MOD_NAME(addr, fp->f_name, c); /* this field must come first */
- MOD_TYPE(addr, fp->f_type, c);
- if (fp->f_args)
- MOD_ARGS(addr, fp->f_args, c);
- if (kern64) {
- scratch64 = fp->f_addr;
- MOD_ADDR(addr, scratch64, c);
- scratch64 = fp->f_size;
- MOD_SIZE(addr, scratch64, c);
- } else {
- MOD_ADDR(addr, fp->f_addr, c);
- MOD_SIZE(addr, fp->f_size, c);
- }
- for (md = fp->f_metadata; md != NULL; md = md->md_next) {
- if (!(md->md_type & MODINFOMD_NOCOPY)) {
- MOD_METADATA(addr, md, c);
- }
- }
- }
- MOD_END(addr, c);
- return(addr);
-}
-
-/*
- * Load the information expected by a powerpc kernel.
- *
- * - The 'boothowto' argument is constructed
- * - The 'bootdev' argument is constructed
- * - The kernel environment is copied into kernel space.
- * - Module metadata are formatted and placed in kernel space.
- */
-int
-md_load_dual(char *args, vm_offset_t *modulep, vm_offset_t *dtb, int kern64)
-{
- struct preloaded_file *kfp;
- struct preloaded_file *xp;
- struct file_metadata *md;
- vm_offset_t kernend;
- vm_offset_t addr;
- vm_offset_t envp;
- vm_offset_t fdtp;
- vm_offset_t size;
- uint64_t scratch64;
- char *rootdevname;
- int howto;
-
- align = kern64 ? 8 : 4;
- howto = md_getboothowto(args);
-
- /*
- * Allow the environment variable 'rootdev' to override the supplied device
- * This should perhaps go to MI code and/or have $rootdev tested/set by
- * MI code before launching the kernel.
- */
- rootdevname = getenv("rootdev");
- if (rootdevname == NULL)
- rootdevname = getenv("currdev");
- /* Try reading the /etc/fstab file to select the root device */
- getrootmount(rootdevname);
-
- /* find the last module in the chain */
- addr = 0;
- for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
- if (addr < (xp->f_addr + xp->f_size))
- addr = xp->f_addr + xp->f_size;
- }
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- /* copy our environment */
- envp = addr;
- addr = md_copyenv(addr);
-
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- /* Copy out FDT */
- size = fdt_copy(addr);
- *dtb = fdtp = addr;
- addr = roundup(addr + size, PAGE_SIZE);
-
- kernend = 0;
- kfp = file_findfile(NULL, kern64 ? "elf64 kernel" : "elf32 kernel");
- if (kfp == NULL)
- kfp = file_findfile(NULL, "elf kernel");
- if (kfp == NULL)
- panic("can't find kernel file");
- file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto);
- if (kern64) {
- scratch64 = envp;
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof scratch64, &scratch64);
- scratch64 = fdtp;
- file_addmetadata(kfp, MODINFOMD_DTBP, sizeof scratch64, &scratch64);
- scratch64 = kernend;
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof scratch64, &scratch64);
- } else {
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp);
- file_addmetadata(kfp, MODINFOMD_DTBP, sizeof fdtp, &fdtp);
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend);
- }
-
- *modulep = addr;
- size = md_copymodules(0, kern64);
- kernend = roundup(addr + size, PAGE_SIZE);
-
- md = file_findmetadata(kfp, MODINFOMD_KERNEND);
- if (kern64) {
- scratch64 = kernend;
- bcopy(&scratch64, md->md_data, sizeof scratch64);
- } else {
- bcopy(&kernend, md->md_data, sizeof kernend);
- }
-
- (void)md_copymodules(addr, kern64);
-
- return(0);
-}
-
-int
-md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
-{
- return (md_load_dual(args, modulep, dtb, 0));
-}
-
-int
-md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
-{
- return (md_load_dual(args, modulep, dtb, 1));
-}
-
diff --git a/sys/boot/powerpc/kboot/ppc64_elf_freebsd.c b/sys/boot/powerpc/kboot/ppc64_elf_freebsd.c
deleted file mode 100644
index 22fa7b576775..000000000000
--- a/sys/boot/powerpc/kboot/ppc64_elf_freebsd.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/*-
- * Copyright (c) 2001 Benno Rice <benno@FreeBSD.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#define __ELF_WORD_SIZE 64
-
-#include <sys/param.h>
-#include <sys/linker.h>
-
-#include <machine/metadata.h>
-#include <machine/elf.h>
-
-#include <stand.h>
-
-#include "bootstrap.h"
-#include "host_syscall.h"
-
-extern char end[];
-extern void *kerneltramp;
-extern size_t szkerneltramp;
-extern int nkexec_segments;
-extern void * loaded_segments;
-
-int
-ppc64_elf_loadfile(char *filename, u_int64_t dest,
- struct preloaded_file **result)
-{
- int r;
-
- r = __elfN(loadfile)(filename, dest, result);
- if (r != 0)
- return (r);
-
- return (0);
-}
-
-int
-ppc64_elf_exec(struct preloaded_file *fp)
-{
- struct file_metadata *fmp;
- vm_offset_t mdp, dtb;
- Elf_Ehdr *e;
- int error;
- uint32_t *trampoline;
- uint64_t entry;
- vm_offset_t trampolinebase;
-
- if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) {
- return(EFTYPE);
- }
- e = (Elf_Ehdr *)&fmp->md_data;
-
- /* Figure out where to put it */
- trampolinebase = archsw.arch_loadaddr(LOAD_RAW, NULL, 0);
-
- /* Set up loader trampoline */
- trampoline = malloc(szkerneltramp);
- memcpy(trampoline, &kerneltramp, szkerneltramp);
- /* Parse function descriptor for ELFv1 kernels */
- if ((e->e_flags & 3) == 2)
- entry = e->e_entry;
- else
- archsw.arch_copyout(e->e_entry + elf64_relocation_offset,
- &entry, 8);
- trampoline[2] = entry + elf64_relocation_offset;
- trampoline[4] = 0; /* Phys. mem offset */
- trampoline[5] = 0; /* OF entry point */
-
- if ((error = md_load64(fp->f_args, &mdp, &dtb)) != 0)
- return (error);
-
- trampoline[3] = dtb;
- trampoline[6] = mdp;
- trampoline[7] = sizeof(mdp);
- printf("Kernel entry at %#jx (%#x) ...\n", e->e_entry, trampoline[2]);
- printf("DTB at %#x, mdp at %#x\n", dtb, mdp);
-
- dev_cleanup();
-
- archsw.arch_copyin(trampoline, trampolinebase, szkerneltramp);
- free(trampoline);
-
- error = kexec_load(trampolinebase, nkexec_segments, &loaded_segments);
- if (error != 0)
- panic("kexec_load returned error: %d", error);
- error = host_reboot(0xfee1dead, 672274793,
- 0x45584543 /* LINUX_REBOOT_CMD_KEXEC */, NULL);
- if (error != 0)
- panic("reboot returned error: %d", error);
- while (1) {}
-
- panic("exec returned");
-}
-
-struct file_format ppc_elf64 =
-{
- ppc64_elf_loadfile,
- ppc64_elf_exec
-};
diff --git a/sys/boot/powerpc/kboot/version b/sys/boot/powerpc/kboot/version
deleted file mode 100644
index b24d6ea8e47a..000000000000
--- a/sys/boot/powerpc/kboot/version
+++ /dev/null
@@ -1,6 +0,0 @@
-$FreeBSD: user/nwhitehorn/kboot/powerpc/kboot/version 224106 2011-07-16 19:01:09Z nwhitehorn $
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-0.1: Initial kboot/PowerPC version.
diff --git a/sys/boot/powerpc/ofw/Makefile b/sys/boot/powerpc/ofw/Makefile
deleted file mode 100644
index 1853b2596fce..000000000000
--- a/sys/boot/powerpc/ofw/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# $FreeBSD$
-
-LOADER_CD9660_SUPPORT?= yes
-LOADER_EXT2FS_SUPPORT?= no
-LOADER_MSDOS_SUPPORT?= no
-LOADER_UFS_SUPPORT?= yes
-LOADER_NET_SUPPORT?= yes
-LOADER_NFS_SUPPORT?= yes
-LOADER_TFTP_SUPPORT?= no
-LOADER_GZIP_SUPPORT?= yes
-LOADER_BZIP2_SUPPORT?= no
-
-.include <bsd.init.mk>
-MK_SSP= no
-MAN=
-
-PROG= loader
-NEWVERSWHAT= "Open Firmware loader" ${MACHINE_ARCH}
-INSTALLFLAGS= -b
-
-# Architecture-specific loader code
-SRCS= conf.c metadata.c vers.c start.c
-SRCS+= ucmpdi2.c
-
-.include "${BOOTSRC}/fdt.mk"
-.if ${MK_FDT} == "yes"
-SRCS+= ofwfdt.c
-.endif
-
-HELP_FILES+= ${FDTSRC}/help.fdt
-
-# Always add MI sources
-.include "${BOOTSRC}/loader.mk"
-
-.PATH: ${SYSDIR}/libkern
-
-CFLAGS+= -ffreestanding -msoft-float
-# load address. set in linker script
-RELOC?= 0x1C00000
-CFLAGS+= -DRELOC=${RELOC}
-
-LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc
-
-# Pull in common loader code
-.PATH: ${BOOTSRC}/ofw/common
-.include "${BOOTSRC}/ofw/common/Makefile.inc"
-
-# Open Firmware standalone support library
-LIBOFW= ${BOOTOBJ}/ofw/libofw/libofw.a
-CFLAGS+= -I${BOOTSRC}/ofw/libofw
-
-DPADD= ${LIBFICL} ${LIBOFW} ${LIBFDT} ${LIBSA}
-LDADD= ${LIBFICL} ${LIBOFW} ${LIBFDT} ${LIBSA}
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/powerpc/ofw/conf.c b/sys/boot/powerpc/ofw/conf.c
deleted file mode 100644
index 7cad372cef04..000000000000
--- a/sys/boot/powerpc/ofw/conf.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/*-
- * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "bootstrap.h"
-#include "libofw.h"
-#include "openfirm.h"
-
-#if defined(LOADER_NET_SUPPORT)
-#include "dev_net.h"
-#endif
-
-/* Make sure we have an explicit reference to exit so libsa's panic pulls in the MD exit */
-void (*exitfn)(int) = exit;
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
-#if defined(LOADER_DISK_SUPPORT) || defined(LOADER_CD9660_SUPPORT)
- &ofwdisk,
-#endif
-#if defined(LOADER_NET_SUPPORT)
- &netdev,
-#endif
- NULL
-};
-
-struct fs_ops *file_system[] = {
-#if defined(LOADER_UFS_SUPPORT)
- &ufs_fsops,
-#endif
-#if defined(LOADER_CD9660_SUPPORT)
- &cd9660_fsops,
-#endif
-#if defined(LOADER_EXT2FS_SUPPORT)
- &ext2fs_fsops,
-#endif
-#if defined(LOADER_NFS_SUPPORT)
- &nfs_fsops,
-#endif
-#if defined(LOADER_TFTP_SUPPORT)
- &tftp_fsops,
-#endif
-#if defined(LOADER_GZIP_SUPPORT)
- &gzipfs_fsops,
-#endif
-#if defined(LOADER_BZIP2_SUPPORT)
- &bzipfs_fsops,
-#endif
- NULL
-};
-
-struct netif_driver *netif_drivers[] = {
-#if defined(LOADER_NET_SUPPORT)
- &ofwnet,
-#endif
- NULL,
-};
-
-/* Exported for PowerPC only */
-/*
- * Sort formats so that those that can detect based on arguments
- * rather than reading the file go first.
- */
-
-struct file_format *file_formats[] = {
- &ofw_elf,
- &ofw_elf64,
- NULL
-};
-
-/*
- * Consoles
- *
- * We don't prototype these in libofw.h because they require
- * data structures from bootstrap.h as well.
- */
-extern struct console ofwconsole;
-
-struct console *consoles[] = {
- &ofwconsole,
- NULL
-};
-
-/*
- * reloc - our load address
- */
-vm_offset_t reloc = RELOC;
diff --git a/sys/boot/powerpc/ofw/ldscript.powerpc b/sys/boot/powerpc/ofw/ldscript.powerpc
deleted file mode 100644
index 3a2765047dbb..000000000000
--- a/sys/boot/powerpc/ofw/ldscript.powerpc
+++ /dev/null
@@ -1,138 +0,0 @@
-/* $FreeBSD$ */
-
-OUTPUT_FORMAT("elf32-powerpc-freebsd", "elf32-powerpc-freebsd",
- "elf32-powerpc-freebsd")
-OUTPUT_ARCH(powerpc:common)
-ENTRY(_start)
-SEARCH_DIR(/usr/lib);
-PROVIDE (__stack = 0);
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0x01c00000 + SIZEOF_HEADERS;
- .interp : { *(.interp) }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rela.text :
- { *(.rela.text) *(.rela.gnu.linkonce.t*) }
- .rela.data :
- { *(.rela.data) *(.rela.gnu.linkonce.d*) }
- .rela.rodata :
- { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
- .rela.got : { *(.rela.got) }
- .rela.got1 : { *(.rela.got1) }
- .rela.got2 : { *(.rela.got2) }
- .rela.ctors : { *(.rela.ctors) }
- .rela.dtors : { *(.rela.dtors) }
- .rela.init : { *(.rela.init) }
- .rela.fini : { *(.rela.fini) }
- .rela.bss : { *(.rela.bss) }
- .rela.plt : { *(.rela.plt) }
- .rela.sdata : { *(.rela.sdata) }
- .rela.sbss : { *(.rela.sbss) }
- .rela.sdata2 : { *(.rela.sdata2) }
- .rela.sbss2 : { *(.rela.sbss2) }
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- PROVIDE (etext = .);
- .init : { *(.init) } =0
- .fini : { *(.fini) } =0
- .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
- .rodata1 : { *(.rodata1) }
- .sdata2 : { *(.sdata2) }
- .sbss2 : { *(.sbss2) }
- /* Adjust the address for the data segment to the next page up. */
- . = ((. + 0x1000) & ~(0x1000 - 1));
- .data :
- {
- *(.data)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- .got1 : { *(.got1) }
- .dynamic : { *(.dynamic) }
- /* Put .ctors and .dtors next to the .got2 section, so that the pointers
- get relocated with -mrelocatable. Also put in the .fixup pointers.
- The current compiler no longer needs this, but keep it around for 2.7.2 */
- PROVIDE (_GOT2_START_ = .);
- .got2 : { *(.got2) }
- PROVIDE (__CTOR_LIST__ = .);
- .ctors : { *(.ctors) }
- PROVIDE (__CTOR_END__ = .);
- PROVIDE (__DTOR_LIST__ = .);
- .dtors : { *(.dtors) }
- PROVIDE (__DTOR_END__ = .);
- PROVIDE (_FIXUP_START_ = .);
- .fixup : { *(.fixup) }
- PROVIDE (_FIXUP_END_ = .);
- PROVIDE (_GOT2_END_ = .);
- PROVIDE (_GOT_START_ = .);
- .got : { *(.got) }
- .got.plt : { *(.got.plt) }
- PROVIDE (_GOT_END_ = .);
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
- .sdata : { *(.sdata) }
- _edata = .;
- PROVIDE (edata = .);
- .sbss :
- {
- PROVIDE (__sbss_start = .);
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- PROVIDE (__sbss_end = .);
- }
- .plt : { *(.plt) }
- .bss :
- {
- PROVIDE (__bss_start = .);
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /* These must appear regardless of . */
-}
-
diff --git a/sys/boot/powerpc/ofw/metadata.c b/sys/boot/powerpc/ofw/metadata.c
deleted file mode 100644
index 25d51f8251ce..000000000000
--- a/sys/boot/powerpc/ofw/metadata.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- *
- * from: FreeBSD: src/sys/boot/sparc64/loader/metadata.c,v 1.6
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-#include <fdt_platform.h>
-
-#include <machine/metadata.h>
-
-#include "bootstrap.h"
-
-int
-md_getboothowto(char *kargs)
-{
- char *cp;
- int howto;
- int active;
- int i;
-
- /* Parse kargs */
- howto = 0;
- if (kargs != NULL) {
- cp = kargs;
- active = 0;
- while (*cp != 0) {
- if (!active && (*cp == '-')) {
- active = 1;
- } else if (active)
- switch (*cp) {
- case 'a':
- howto |= RB_ASKNAME;
- break;
- case 'C':
- howto |= RB_CDROM;
- break;
- case 'd':
- howto |= RB_KDB;
- break;
- case 'D':
- howto |= RB_MULTIPLE;
- break;
- case 'm':
- howto |= RB_MUTE;
- break;
- case 'g':
- howto |= RB_GDB;
- break;
- case 'h':
- howto |= RB_SERIAL;
- break;
- case 'p':
- howto |= RB_PAUSE;
- break;
- case 'r':
- howto |= RB_DFLTROOT;
- break;
- case 's':
- howto |= RB_SINGLE;
- break;
- case 'v':
- howto |= RB_VERBOSE;
- break;
- default:
- active = 0;
- break;
- }
- cp++;
- }
- }
- /* get equivalents from the environment */
- for (i = 0; howto_names[i].ev != NULL; i++)
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- if (!strcmp(getenv("console"), "comconsole"))
- howto |= RB_SERIAL;
- if (!strcmp(getenv("console"), "nullconsole"))
- howto |= RB_MUTE;
- return(howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-vm_offset_t
-md_copyenv(vm_offset_t addr)
-{
- struct env_var *ep;
-
- /* traverse the environment */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- archsw.arch_copyin(ep->ev_name, addr, strlen(ep->ev_name));
- addr += strlen(ep->ev_name);
- archsw.arch_copyin("=", addr, 1);
- addr++;
- if (ep->ev_value != NULL) {
- archsw.arch_copyin(ep->ev_value, addr, strlen(ep->ev_value));
- addr += strlen(ep->ev_value);
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- return(addr);
-}
-
-/*
- * Copy module-related data into the load area, where it can be
- * used as a directory for loaded modules.
- *
- * Module data is presented in a self-describing format. Each datum
- * is preceded by a 32-bit identifier and a 32-bit size field.
- *
- * Currently, the following data are saved:
- *
- * MOD_NAME (variable) module name (string)
- * MOD_TYPE (variable) module type (string)
- * MOD_ARGS (variable) module parameters (string)
- * MOD_ADDR sizeof(vm_offset_t) module load address
- * MOD_SIZE sizeof(size_t) module size
- * MOD_METADATA (variable) type-specific metadata
- */
-
-static int align;
-
-#define COPY32(v, a, c) { \
- u_int32_t x = (v); \
- if (c) \
- archsw.arch_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(strlen(s) + 1, a, c) \
- if (c) \
- archsw.arch_copyin(s, a, strlen(s) + 1);\
- a += roundup(strlen(s) + 1, align); \
-}
-
-#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c)
-#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c)
-#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c)
-
-#define MOD_VAR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(sizeof(s), a, c); \
- if (c) \
- archsw.arch_copyin(&s, a, sizeof(s)); \
- a += roundup(sizeof(s), align); \
-}
-
-#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c)
-#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c)
-
-#define MOD_METADATA(a, mm, c) { \
- COPY32(MODINFO_METADATA | mm->md_type, a, c);\
- COPY32(mm->md_size, a, c); \
- if (c) \
- archsw.arch_copyin(mm->md_data, a, mm->md_size);\
- a += roundup(mm->md_size, align); \
-}
-
-#define MOD_END(a, c) { \
- COPY32(MODINFO_END, a, c); \
- COPY32(0, a, c); \
-}
-
-vm_offset_t
-md_copymodules(vm_offset_t addr, int kern64)
-{
- struct preloaded_file *fp;
- struct file_metadata *md;
- uint64_t scratch64;
- int c;
-
- c = addr != 0;
- /* start with the first module on the list, should be the kernel */
- for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
-
- MOD_NAME(addr, fp->f_name, c); /* this field must come first */
- MOD_TYPE(addr, fp->f_type, c);
- if (fp->f_args)
- MOD_ARGS(addr, fp->f_args, c);
- if (kern64) {
- scratch64 = fp->f_addr;
- MOD_ADDR(addr, scratch64, c);
- scratch64 = fp->f_size;
- MOD_SIZE(addr, scratch64, c);
- } else {
- MOD_ADDR(addr, fp->f_addr, c);
- MOD_SIZE(addr, fp->f_size, c);
- }
- for (md = fp->f_metadata; md != NULL; md = md->md_next) {
- if (!(md->md_type & MODINFOMD_NOCOPY)) {
- MOD_METADATA(addr, md, c);
- }
- }
- }
- MOD_END(addr, c);
- return(addr);
-}
-
-/*
- * Load the information expected by a powerpc kernel.
- *
- * - The 'boothowto' argument is constructed
- * - The 'bootdev' argument is constructed
- * - The kernel environment is copied into kernel space.
- * - Module metadata are formatted and placed in kernel space.
- */
-int
-md_load_dual(char *args, vm_offset_t *modulep, vm_offset_t *dtb, int kern64)
-{
- struct preloaded_file *kfp;
- struct preloaded_file *xp;
- struct file_metadata *md;
- vm_offset_t kernend;
- vm_offset_t addr;
- vm_offset_t envp;
- vm_offset_t fdtp;
- vm_offset_t size;
- uint64_t scratch64;
- char *rootdevname;
- int howto;
-
- align = kern64 ? 8 : 4;
- howto = md_getboothowto(args);
-
- /*
- * Allow the environment variable 'rootdev' to override the supplied device
- * This should perhaps go to MI code and/or have $rootdev tested/set by
- * MI code before launching the kernel.
- */
- rootdevname = getenv("rootdev");
- if (rootdevname == NULL)
- rootdevname = getenv("currdev");
- /* Try reading the /etc/fstab file to select the root device */
- getrootmount(rootdevname);
-
- /* find the last module in the chain */
- addr = 0;
- for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
- if (addr < (xp->f_addr + xp->f_size))
- addr = xp->f_addr + xp->f_size;
- }
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- /* copy our environment */
- envp = addr;
- addr = md_copyenv(addr);
-
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- /* Copy out FDT */
- *dtb = fdtp = 0;
- if (getenv("usefdt") != NULL) {
- size = fdt_copy(addr);
- *dtb = fdtp = addr;
- addr = roundup(addr + size, PAGE_SIZE);
- }
-
- kernend = 0;
- kfp = file_findfile(NULL, kern64 ? "elf64 kernel" : "elf32 kernel");
- if (kfp == NULL)
- kfp = file_findfile(NULL, "elf kernel");
- if (kfp == NULL)
- panic("can't find kernel file");
- file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto);
- if (kern64) {
- scratch64 = envp;
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof scratch64, &scratch64);
- if (fdtp != 0) {
- scratch64 = fdtp;
- file_addmetadata(kfp, MODINFOMD_DTBP, sizeof scratch64, &scratch64);
- }
- scratch64 = kernend;
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof scratch64, &scratch64);
- } else {
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp);
- if (fdtp != 0)
- file_addmetadata(kfp, MODINFOMD_DTBP, sizeof fdtp, &fdtp);
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend);
- }
-
- *modulep = addr;
- size = md_copymodules(0, kern64);
- kernend = roundup(addr + size, PAGE_SIZE);
-
- md = file_findmetadata(kfp, MODINFOMD_KERNEND);
- if (kern64) {
- scratch64 = kernend;
- bcopy(&scratch64, md->md_data, sizeof scratch64);
- } else {
- bcopy(&kernend, md->md_data, sizeof kernend);
- }
-
- (void)md_copymodules(addr, kern64);
-
- return(0);
-}
-
-int
-md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
-{
- return (md_load_dual(args, modulep, dtb, 0));
-}
-
-int
-md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
-{
- return (md_load_dual(args, modulep, dtb, 1));
-}
-
diff --git a/sys/boot/powerpc/ofw/ofwfdt.c b/sys/boot/powerpc/ofw/ofwfdt.c
deleted file mode 100644
index 493bae7576fb..000000000000
--- a/sys/boot/powerpc/ofw/ofwfdt.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*-
- * Copyright (C) 2014-2015 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-#include <fdt_platform.h>
-#include <openfirm.h>
-#include <libfdt.h>
-#include "bootstrap.h"
-
-extern int command_fdt_internal(int argc, char *argv[]);
-
-static int
-OF_hasprop(phandle_t node, const char *prop)
-{
- return (OF_getproplen(node, (char *)prop) > 0);
-}
-
-static void
-add_node_to_fdt(void *buffer, phandle_t node, int fdt_offset)
-{
- int i, child_offset, error;
- char name[255], *lastprop, *subname;
- void *propbuf;
- ssize_t proplen;
-
- lastprop = NULL;
- while (OF_nextprop(node, lastprop, name) > 0) {
- proplen = OF_getproplen(node, name);
-
- /* Detect and correct for errors and strangeness */
- if (proplen < 0)
- proplen = 0;
- if (proplen > 1024)
- proplen = 1024;
-
- propbuf = malloc(proplen);
- if (propbuf == NULL) {
- printf("Cannot allocate memory for prop %s\n", name);
- return;
- }
- OF_getprop(node, name, propbuf, proplen);
- error = fdt_setprop(buffer, fdt_offset, name, propbuf, proplen);
- free(propbuf);
- lastprop = name;
- if (error)
- printf("Error %d adding property %s to "
- "node %d\n", error, name, fdt_offset);
- }
-
- if (!OF_hasprop(node, "phandle") && !OF_hasprop(node, "linux,phandle")
- && !OF_hasprop(node, "ibm,phandle"))
- fdt_setprop(buffer, fdt_offset, "phandle", &node, sizeof(node));
-
- for (node = OF_child(node); node > 0; node = OF_peer(node)) {
- OF_package_to_path(node, name, sizeof(name));
- subname = strrchr(name, '/');
- subname++;
- child_offset = fdt_add_subnode(buffer, fdt_offset, subname);
- if (child_offset < 0) {
- printf("Error %d adding node %s (%s), skipping\n",
- child_offset, name, subname);
- continue;
- }
-
- add_node_to_fdt(buffer, node, child_offset);
- }
-}
-
-static void
-ofwfdt_fixups(void *fdtp)
-{
- int offset, len, i;
- phandle_t node;
- ihandle_t rtas;
- const void *prop;
-
- /*
- * Instantiate and add reservations for RTAS state if present
- */
-
- offset = fdt_path_offset(fdtp, "/rtas");
- if (offset > 0) {
- uint32_t base;
- void *rtasmem;
- char path[255];
-
- node = OF_finddevice("/rtas");
- OF_package_to_path(node, path, sizeof(path));
- OF_getprop(node, "rtas-size", &len, sizeof(len));
-
- /* Allocate memory */
- rtasmem = OF_claim(0, len, 4096);
-
- /* Instantiate RTAS */
- rtas = OF_open(path);
- base = 0;
- OF_call_method("instantiate-rtas", rtas, 1, 1, (cell_t)rtas,
- &base);
-
- /* Store info to FDT using Linux convention */
- base = cpu_to_fdt32(base);
- fdt_setprop(fdtp, offset, "linux,rtas-entry", &base,
- sizeof(base));
- base = cpu_to_fdt32((uint32_t)rtasmem);
- offset = fdt_path_offset(fdtp, "/rtas");
- fdt_setprop(fdtp, offset, "linux,rtas-base", &base,
- sizeof(base));
-
- /* Mark RTAS private data area reserved */
- fdt_add_mem_rsv(fdtp, base, len);
- } else {
- /*
- * Remove /memory/available properties, which reflect long-gone
- * OF state. Note that this doesn't work if we need RTAS still,
- * since that's part of the firmware.
- */
- offset = fdt_path_offset(fdtp, "/memory@0");
- if (offset > 0)
- fdt_delprop(fdtp, offset, "available");
- }
-
-
- /*
- * Convert stored ihandles under /chosen to xref phandles
- */
- offset = fdt_path_offset(fdtp, "/chosen");
- if (offset > 0) {
- const char *chosenprops[] = {"stdout", "stdin", "mmu", "cpu",
- NULL};
- const uint32_t *ihand;
- for (i = 0; chosenprops[i] != NULL; i++) {
- ihand = fdt_getprop(fdtp, offset, chosenprops[i], &len);
- if (ihand != NULL && len == sizeof(*ihand)) {
- node = OF_instance_to_package(
- fdt32_to_cpu(*ihand));
- if (OF_hasprop(node, "phandle"))
- OF_getprop(node, "phandle", &node,
- sizeof(node));
- else if (OF_hasprop(node, "linux,phandle"))
- OF_getprop(node, "linux,phandle", &node,
- sizeof(node));
- else if (OF_hasprop(node, "ibm,phandle"))
- OF_getprop(node, "ibm,phandle", &node,
- sizeof(node));
- node = cpu_to_fdt32(node);
- fdt_setprop(fdtp, offset, chosenprops[i], &node,
- sizeof(node));
- }
-
- /* Refind node in case it moved */
- offset = fdt_path_offset(fdtp, "/chosen");
- }
- }
-}
-
-int
-fdt_platform_load_dtb(void)
-{
- void *buffer;
- size_t buflen = 409600;
-
- buffer = malloc(buflen);
- fdt_create_empty_tree(buffer, buflen);
- add_node_to_fdt(buffer, OF_peer(0), fdt_path_offset(buffer, "/"));
- ofwfdt_fixups(buffer);
- fdt_pack(buffer);
-
- fdt_load_dtb_addr(buffer);
- free(buffer);
-
- return (0);
-}
-
-void
-fdt_platform_fixups(void)
-{
-
-}
-
-static int
-command_fdt(int argc, char *argv[])
-{
-
- return (command_fdt_internal(argc, argv));
-}
-
-COMMAND_SET(fdt, "fdt", "flattened device tree handling", command_fdt);
-
diff --git a/sys/boot/powerpc/ofw/start.c b/sys/boot/powerpc/ofw/start.c
deleted file mode 100644
index 911a2ec2af77..000000000000
--- a/sys/boot/powerpc/ofw/start.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $NetBSD: Locore.c,v 1.7 2000/08/20 07:04:59 tsubai Exp $ */
-/*-
- * Copyright (C) 1995, 1996 Wolfgang Solfrank.
- * Copyright (C) 1995, 1996 TooLs GmbH.
- * 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. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by TooLs GmbH.
- * 4. The name of TooLs GmbH may not be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "libofw.h"
-
-void startup(void *, int, int (*)(void *), char *, int);
-
-__asm(" \n\
- .data \n\
- .align 4 \n\
-stack: \n\
- .space 16388 \n\
- \n\
- .text \n\
- .globl _start \n\
-_start: \n\
- lis %r1,stack@ha \n\
- addi %r1,%r1,stack@l \n\
- addi %r1,%r1,8192 \n\
- \n\
- /* Clear the .bss!!! */ \n\
- li %r0,0 \n\
- lis %r8,_edata@ha \n\
- addi %r8,%r8,_edata@l\n\
- lis %r9,_end@ha \n\
- addi %r9,%r9,_end@l \n\
- \n\
-1: cmpw 0,%r8,%r9 \n\
- bge 2f \n\
- stw %r0,0(%r8) \n\
- addi %r8,%r8,4 \n\
- b 1b \n\
- \n\
-2: b startup \n\
-");
-
-void
-startup(void *vpd, int res, int (*openfirm)(void *), char *arg, int argl)
-{
- main(openfirm);
-}
diff --git a/sys/boot/powerpc/ofw/version b/sys/boot/powerpc/ofw/version
deleted file mode 100644
index cb0f6938f966..000000000000
--- a/sys/boot/powerpc/ofw/version
+++ /dev/null
@@ -1,6 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-0.1: Initial OFW/PowerPC version.
diff --git a/sys/boot/powerpc/ps3/Makefile b/sys/boot/powerpc/ps3/Makefile
deleted file mode 100644
index 07ad135d9796..000000000000
--- a/sys/boot/powerpc/ps3/Makefile
+++ /dev/null
@@ -1,48 +0,0 @@
-# $FreeBSD$
-
-LOADER_UFS_SUPPORT?= yes
-LOADER_CD9660_SUPPORT?= yes
-LOADER_EXT2FS_SUPPORT?= yes
-LOADER_NET_SUPPORT?= yes
-LOADER_NFS_SUPPORT?= yes
-LOADER_TFTP_SUPPORT?= no
-LOADER_GZIP_SUPPORT?= yes
-LOADER_BZIP2_SUPPORT?= no
-
-.include <bsd.init.mk>
-MK_SSP= no
-MAN=
-
-PROG= loader.ps3
-NEWVERSWHAT= "Playstation 3 loader" ${MACHINE_ARCH}
-INSTALLFLAGS= -b
-
-# Architecture-specific loader code
-SRCS= start.S conf.c metadata.c vers.c main.c devicename.c ppc64_elf_freebsd.c
-SRCS+= lv1call.S ps3cons.c font.h ps3mmu.c ps3net.c ps3repo.c \
- ps3stor.c ps3disk.c ps3cdrom.c
-SRCS+= ucmpdi2.c
-
-CFLAGS+= -mcpu=powerpc64
-
-# Always add MI sources
-HELP_FILES= # Disable
-.include "${BOOTSRC}/loader.mk"
-.PATH: ${SYSDIR}/libkern
-
-CFLAGS+= -Wall -ffreestanding -msoft-float -DAIM
-# load address. set in linker script
-RELOC?= 0x0
-CFLAGS+= -DRELOC=${RELOC}
-
-LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc
-
-DPADD= ${LIBFICL} ${LIBOFW} ${LIBSA}
-LDADD= ${LIBFICL} ${LIBOFW} ${LIBSA}
-
-SC_DFLT_FONT=cp437
-
-font.h:
- uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/powerpc/ps3/conf.c b/sys/boot/powerpc/ps3/conf.c
deleted file mode 100644
index 3a5ae4c41f02..000000000000
--- a/sys/boot/powerpc/ps3/conf.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * Copyright (C) 1999 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "bootstrap.h"
-
-#if defined(LOADER_NET_SUPPORT)
-#include "dev_net.h"
-#endif
-
-extern struct devsw ps3disk;
-extern struct devsw ps3cdrom;
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
-#if defined(LOADER_CD9660_SUPPORT)
- &ps3cdrom,
-#endif
-#if defined(LOADER_DISK_SUPPORT)
- &ps3disk,
-#endif
-#if defined(LOADER_NET_SUPPORT)
- &netdev,
-#endif
- NULL
-};
-
-struct fs_ops *file_system[] = {
-#if defined(LOADER_UFS_SUPPORT)
- &ufs_fsops,
-#endif
-#if defined(LOADER_CD9660_SUPPORT)
- &cd9660_fsops,
-#endif
-#if defined(LOADER_EXT2FS_SUPPORT)
- &ext2fs_fsops,
-#endif
-#if defined(LOADER_NFS_SUPPORT)
- &nfs_fsops,
-#endif
-#if defined(LOADER_TFTP_SUPPORT)
- &tftp_fsops,
-#endif
-#if defined(LOADER_GZIP_SUPPORT)
- &gzipfs_fsops,
-#endif
-#if defined(LOADER_BZIP2_SUPPORT)
- &bzipfs_fsops,
-#endif
- NULL
-};
-
-extern struct netif_driver ps3net;
-
-struct netif_driver *netif_drivers[] = {
-#if defined(LOADER_NET_SUPPORT)
- &ps3net,
-#endif
- NULL,
-};
-
-/* Exported for PowerPC only */
-/*
- * Sort formats so that those that can detect based on arguments
- * rather than reading the file go first.
- */
-
-extern struct file_format ppc_elf64;
-
-struct file_format *file_formats[] = {
- &ppc_elf64,
- NULL
-};
-
-/*
- * Consoles
- */
-extern struct console ps3console;
-
-struct console *consoles[] = {
- &ps3console,
- NULL
-};
-
-/*
- * reloc - our load address
- */
-vm_offset_t reloc = RELOC;
diff --git a/sys/boot/powerpc/ps3/devicename.c b/sys/boot/powerpc/ps3/devicename.c
deleted file mode 100644
index 041f853986d5..000000000000
--- a/sys/boot/powerpc/ps3/devicename.c
+++ /dev/null
@@ -1,238 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/disklabel.h>
-
-#include <stand.h>
-#include <string.h>
-
-#include "bootstrap.h"
-#include "ps3.h"
-#include "ps3devdesc.h"
-
-static int ps3_parsedev(struct ps3_devdesc **dev, const char *devspec,
- const char **path);
-
-/*
- * Point (dev) at an allocated device specifier for the device matching the
- * path in (devspec). If it contains an explicit device specification,
- * use that. If not, use the default device.
- */
-int
-ps3_getdev(void **vdev, const char *devspec, const char **path)
-{
- struct ps3_devdesc **dev = (struct ps3_devdesc **)vdev;
- int rv = 0;
-
- /*
- * If it looks like this is just a path and no
- * device, go with the current device.
- */
- if ((devspec == NULL) || (devspec[0] == '/') ||
- (strchr(devspec, ':') == NULL)) {
- rv = ps3_parsedev(dev, getenv("currdev"), NULL);
-
- if (rv == 0 && path != NULL)
- *path = devspec;
- return(rv);
- }
-
- /*
- * Try to parse the device name off the beginning of the devspec.
- */
- return (ps3_parsedev(dev, devspec, path));
-}
-
-/*
- * Point (dev) at an allocated device specifier matching the string version
- * at the beginning of (devspec). Return a pointer to the remaining
- * text in (path).
- *
- * In all cases, the beginning of (devspec) is compared to the names
- * of known devices in the device switch, and then any following text
- * is parsed according to the rules applied to the device type.
- *
- * For disk-type devices, the syntax is:
- *
- * disk<unit>[<partition>]:
- *
- */
-static int
-ps3_parsedev(struct ps3_devdesc **dev, const char *devspec, const char **path)
-{
- struct ps3_devdesc *idev;
- struct devsw *dv;
- char *cp;
- const char *np;
- int i, unit, pnum, ptype, err;
-
- /* minimum length check */
- if (strlen(devspec) < 2)
- return(EINVAL);
-
- /* look for a device that matches */
- for (i = 0, dv = NULL; devsw[i] != NULL; i++) {
- if (!strncmp(devspec, devsw[i]->dv_name,
- strlen(devsw[i]->dv_name))) {
- dv = devsw[i];
- break;
- }
- }
- if (dv == NULL)
- return(ENOENT);
- idev = malloc(sizeof(struct ps3_devdesc));
- err = 0;
- np = (devspec + strlen(dv->dv_name));
-
- switch(dv->dv_type) {
- case DEVT_NONE:
- break;
-
- case DEVT_DISK:
- unit = -1;
- pnum = -1;
- ptype = -1;
- if (*np && (*np != ':')) {
- /* next comes the unit number */
- unit = strtol(np, &cp, 10);
- if (cp == np) {
- err = EUNIT;
- goto fail;
- }
- if (*cp && (*cp != ':')) {
- /* get partition */
- if (*cp == 'p' && *(cp + 1) &&
- *(cp + 1) != ':') {
- pnum = strtol(cp + 1, &cp, 10);
- ptype = PTYPE_GPT;
- } else {
- pnum = *cp - 'a';
- ptype = PTYPE_BSDLABEL;
- if ((pnum < 0) ||
- (pnum >= MAXPARTITIONS)) {
- err = EPART;
- goto fail;
- }
- cp++;
- }
- }
- }
- if (*cp && (*cp != ':')) {
- err = EINVAL;
- goto fail;
- }
-
- idev->d_unit = unit;
- idev->d_disk.pnum = pnum;
- idev->d_disk.ptype = ptype;
- idev->d_disk.data = NULL;
- if (path != NULL)
- *path = (*cp == 0) ? cp : cp + 1;
- break;
-
- case DEVT_NET:
- case DEVT_CD:
- /*
- * PS3 only has one network interface (well, two, but
- * netbooting over wireless is not something I'm going
- * to worry about.
- */
-
- idev->d_unit = 0;
- break;
-
- default:
- err = EINVAL;
- goto fail;
- }
- idev->d_dev = dv;
- idev->d_type = dv->dv_type;
- if (dev == NULL) {
- free(idev);
- } else {
- *dev = idev;
- }
- return (0);
-
-fail:
- free(idev);
- return (err);
-}
-
-
-char *
-ps3_fmtdev(void *vdev)
-{
- struct ps3_devdesc *dev = (struct ps3_devdesc *)vdev;
- char *cp;
- static char buf[128];
-
- switch(dev->d_type) {
- case DEVT_NONE:
- strcpy(buf, "(no device)");
- break;
-
- case DEVT_DISK:
- cp = buf;
- cp += sprintf(cp, "%s%d", dev->d_dev->dv_name, dev->d_unit);
- if (dev->d_kind.disk.pnum >= 0) {
- if (dev->d_kind.disk.ptype == PTYPE_BSDLABEL)
- cp += sprintf(cp, "%c",
- dev->d_kind.disk.pnum + 'a');
- else if (dev->d_kind.disk.ptype == PTYPE_GPT)
- cp += sprintf(cp, "p%i",
- dev->d_kind.disk.pnum);
- }
-
- strcat(cp, ":");
- break;
-
- case DEVT_NET:
- case DEVT_CD:
- sprintf(buf, "%s%d:", dev->d_dev->dv_name, dev->d_unit);
- break;
- }
- return(buf);
-}
-
-/*
- * Set currdev to suit the value being supplied in (value).
- */
-int
-ps3_setcurrdev(struct env_var *ev, int flags, const void *value)
-{
- struct ps3_devdesc *ncurr;
- int rv;
-
- if ((rv = ps3_parsedev(&ncurr, value, NULL)) != 0)
- return (rv);
- free(ncurr);
- env_setenv(ev->ev_name, flags | EV_NOHOOK, value, NULL, NULL);
- return (0);
-}
diff --git a/sys/boot/powerpc/ps3/ldscript.powerpc b/sys/boot/powerpc/ps3/ldscript.powerpc
deleted file mode 100644
index 12f3e751fb52..000000000000
--- a/sys/boot/powerpc/ps3/ldscript.powerpc
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $FreeBSD$ */
-
-OUTPUT_FORMAT("elf32-powerpc-freebsd", "elf32-powerpc-freebsd",
- "elf32-powerpc-freebsd")
-OUTPUT_ARCH(powerpc:common)
-ENTRY(_start)
-SEARCH_DIR(/usr/lib);
-PROVIDE (__stack = 0);
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0x0;
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- .interp : { *(.interp) }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rela.text :
- { *(.rela.text) *(.rela.gnu.linkonce.t*) }
- .rela.data :
- { *(.rela.data) *(.rela.gnu.linkonce.d*) }
- .rela.rodata :
- { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
- .rela.got : { *(.rela.got) }
- .rela.got1 : { *(.rela.got1) }
- .rela.got2 : { *(.rela.got2) }
- .rela.ctors : { *(.rela.ctors) }
- .rela.dtors : { *(.rela.dtors) }
- .rela.init : { *(.rela.init) }
- .rela.fini : { *(.rela.fini) }
- .rela.bss : { *(.rela.bss) }
- .rela.plt : { *(.rela.plt) }
- .rela.sbss : { *(.rela.sbss) }
- .rela.sbss2 : { *(.rela.sbss2) }
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- PROVIDE (etext = .);
- .init : { *(.init) } =0
- .fini : { *(.fini) } =0
- .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
- .rodata1 : { *(.rodata1) }
- .sbss2 : { *(.sbss2) }
- /* Adjust the address for the data segment to the next page up. */
- . = ((. + 0x1000) & ~(0x1000 - 1));
- .data :
- {
- *(.data)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- .got1 : { *(.got1) }
- .dynamic : { *(.dynamic) }
- /* Put .ctors and .dtors next to the .got2 section, so that the pointers
- get relocated with -mrelocatable. Also put in the .fixup pointers.
- The current compiler no longer needs this, but keep it around for 2.7.2 */
- PROVIDE (_GOT2_START_ = .);
- .got2 : { *(.got2) }
- PROVIDE (__CTOR_LIST__ = .);
- .ctors : { *(.ctors) }
- PROVIDE (__CTOR_END__ = .);
- PROVIDE (__DTOR_LIST__ = .);
- .dtors : { *(.dtors) }
- PROVIDE (__DTOR_END__ = .);
- PROVIDE (_FIXUP_START_ = .);
- .fixup : { *(.fixup) }
- PROVIDE (_FIXUP_END_ = .);
- PROVIDE (_GOT2_END_ = .);
- PROVIDE (_GOT_START_ = .);
- .got : { *(.got) }
- .got.plt : { *(.got.plt) }
- PROVIDE (_GOT_END_ = .);
- _edata = .;
- PROVIDE (edata = .);
- .sbss :
- {
- PROVIDE (__sbss_start = .);
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- PROVIDE (__sbss_end = .);
- }
- .plt : { *(.plt) }
- .bss :
- {
- PROVIDE (__bss_start = .);
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- . = ALIGN(4096);
- _end = . ;
- PROVIDE (end = .);
-}
-
diff --git a/sys/boot/powerpc/ps3/lv1call.S b/sys/boot/powerpc/ps3/lv1call.S
deleted file mode 100644
index a399a9c3bbf6..000000000000
--- a/sys/boot/powerpc/ps3/lv1call.S
+++ /dev/null
@@ -1,346 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-/* Hypercall stubs. Note: this is all a hack and should die. */
-
-#define hc .long 0x44000022
-
-#define LD64_IM(r, highest, higher, high, low) \
- lis r,highest; \
- addi r,r,higher; \
- sldi r,r,32; \
- addis r,r,high; \
- addi r,r,low;
-
-#define SIMPLE_HVCALL(x, c) \
-.global x; \
-x: \
- mflr %r0; \
- stw %r0,4(%r1); \
- clrldi %r3,%r3,32; \
- clrldi %r4,%r4,32; \
- clrldi %r5,%r5,32; \
- clrldi %r6,%r6,32; \
- clrldi %r7,%r7,32; \
- clrldi %r8,%r8,32; \
- clrldi %r9,%r9,32; \
- clrldi %r10,%r10,32; \
- li %r11,c; \
- hc; \
- extsw %r3,%r3; \
- lwz %r0,4(%r1); \
- mtlr %r0; \
- blr
-
-SIMPLE_HVCALL(lv1_open_device, 170)
-SIMPLE_HVCALL(lv1_close_device, 171)
-SIMPLE_HVCALL(lv1_gpu_open, 210)
-SIMPLE_HVCALL(lv1_gpu_context_attribute, 225)
-SIMPLE_HVCALL(lv1_panic, 255)
-SIMPLE_HVCALL(lv1_net_start_tx_dma, 187)
-SIMPLE_HVCALL(lv1_net_stop_tx_dma, 188)
-SIMPLE_HVCALL(lv1_net_start_rx_dma, 189)
-SIMPLE_HVCALL(lv1_net_stop_rx_dma, 190)
-
-.global lv1_get_physmem
-lv1_get_physmem:
- mflr %r0
- stw %r0,4(%r1)
- stw %r3,-8(%r1) /* Address for maxmem */
-
- li %r11,69 /* Get PU ID */
- hc
- std %r4,-16(%r1)
-
- li %r11,74 /* Get LPAR ID */
- hc
- std %r4,-24(%r1)
-
- ld %r3,-24(%r1)
- LD64_IM(%r4,0x0000,0x0000,0x6269,0x0000 /* "bi" */)
- LD64_IM(%r5,0x7075,0x0000,0x0000,0x0000 /* "pu" */)
- ld %r6,-16(%r1)
- LD64_IM(%r7,0x726d,0x5f73,0x697a,0x6500 /* "rm_size" */)
- li %r11,91
- hc
- extsw %r3,%r3
-
- lwz %r5,-8(%r1)
- std %r4,0(%r5)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_setup_address_space
-lv1_setup_address_space:
- mflr %r0
- stw %r0,4(%r1)
-
- stw %r3,-4(%r1)
- stw %r4,-8(%r1)
-
- li %r3,18 /* PT size: log2(256 KB) */
- li %r4,2 /* Two page sizes */
- li %r5,24 /* Page sizes: (24 << 56) | (16 << 48) */
- sldi %r5,%r5,24
- li %r6,16
- sldi %r6,%r6,16
- or %r5,%r5,%r6
- sldi %r5,%r5,32
-
- li %r11,2 /* lv1_construct_virtual_address_space */
- hc
-
- lwz %r6,-4(%r1)
- lwz %r7,-8(%r1)
- std %r4,0(%r6)
- std %r5,0(%r7)
-
- /* AS_ID in r4 */
- mr %r3,%r4
- li %r11,7 /* lv1_select_virtual_address_space */
- hc
- extsw %r3,%r3
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_insert_pte
-lv1_insert_pte:
- mflr %r0
- stw %r0,4(%r1)
-
- mr %r11,%r4 /* Save R4 */
-
- clrldi %r3,%r3,32
- clrldi %r7,%r5,32
-
- sldi %r4,%r3,3 /* Convert ptegidx into base PTE slot */
- li %r3,0 /* Current address space */
- ld %r5,0(%r11)
- ld %r6,8(%r11)
- li %r8,0 /* No other flags */
-
- li %r11,158
- hc
- extsw %r3,%r3
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_gpu_context_allocate
-lv1_gpu_context_allocate:
- mflr %r0
- stw %r0,4(%r1)
- stw %r7,-4(%r1)
-
- sldi %r3,%r3,32
- clrldi %r4,%r4,32
- or %r3,%r3,%r4
- clrldi %r4,%r5,32
- clrldi %r5,%r6,32
-
- li %r11,217
- hc
- extsw %r3,%r3
-
- lwz %r7,-4(%r1)
- std %r4,0(%r7)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_gpu_memory_allocate
-lv1_gpu_memory_allocate:
- mflr %r0
- stw %r0,4(%r1)
- stw %r8,-4(%r1)
- stw %r9,-8(%r1)
-
- li %r11,214
- hc
- extsw %r3,%r3
-
- lwz %r8,-4(%r1)
- lwz %r9,-8(%r1)
- std %r4,0(%r8)
- std %r5,0(%r9)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_net_control
-lv1_net_control:
- mflr %r0
- stw %r0,4(%r1)
- stw %r9,-4(%r1)
-
- li %r11,194
- hc
- extsw %r3,%r3
-
- lwz %r8,-4(%r1)
- std %r4,0(%r8)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_setup_dma
-lv1_setup_dma:
- mflr %r0
- stw %r0,4(%r1)
- stw %r3,-4(%r1)
- stw %r4,-8(%r1)
- stw %r5,-12(%r1)
-
- lwz %r3,-4(%r1)
- lwz %r4,-8(%r1)
- lis %r5,0x0800 /* 128 MB */
- li %r6,24 /* log2(IO_PAGESIZE) */
- li %r7,0 /* flags */
- li %r11,174 /* lv1_allocate_device_dma_region */
- hc
- extsw %r3,%r3
- cmpdi %r3,0
- bne 1f
- std %r4,-24(%r1)
-
- lwz %r3,-4(%r1)
- lwz %r4,-8(%r1)
- li %r5,0
- ld %r6,-24(%r1)
- lis %r7,0x0800 /* 128 MB */
- lis %r8,0xf800 /* flags */
- sldi %r8,%r8,32
- li %r11,176 /* lv1_map_device_dma_region */
- hc
- extsw %r3,%r3
-
- lwz %r9,-12(%r1)
- ld %r6,-24(%r1)
- std %r6,0(%r9)
-
-1: lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_get_repository_node_value
-lv1_get_repository_node_value:
- mflr %r0
- stw %r0,4(%r1)
-
- sldi %r3,%r3,32
- clrldi %r4,%r4,32
- or %r3,%r3,%r4
- sldi %r4,%r5,32
- clrldi %r5,%r6,32
- or %r4,%r4,%r5
- sldi %r5,%r7,32
- clrldi %r6,%r8,32
- or %r5,%r5,%r6
- sldi %r6,%r9,32
- clrldi %r7,%r10,32
- or %r6,%r6,%r7
- lwz %r7,8(%r1)
- lwz %r8,12(%r1)
- sldi %r7,%r7,32
- or %r7,%r7,%r8
-
- li %r11,91
- hc
- extsw %r3,%r3
-
- lwz %r6,16(%r1)
- std %r4,0(%r6)
- lwz %r6,20(%r1)
- std %r5,0(%r6)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_storage_read
-lv1_storage_read:
- mflr %r0
- stw %r0,4(%r1)
-
- sldi %r3,%r3,32
- clrldi %r4,%r4,32
- or %r3,%r3,%r4
- sldi %r4,%r5,32
- clrldi %r5,%r6,32
- or %r4,%r4,%r5
- sldi %r5,%r7,32
- clrldi %r6,%r8,32
- or %r5,%r5,%r6
- sldi %r6,%r9,32
- clrldi %r7,%r10,32
- or %r6,%r6,%r7
- ld %r7,8(%r1)
- ld %r8,16(%r1)
-
- li %r11,245
- hc
- extsw %r3,%r3
-
- lwz %r5,24(%r1)
- std %r4,0(%r5)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
-
-.global lv1_storage_check_async_status
-lv1_storage_check_async_status:
- mflr %r0
- stw %r0,4(%r1)
- stw %r7,-4(%r1)
-
- sldi %r3,%r3,32
- clrldi %r4,%r4,32
- or %r3,%r3,%r4
- sldi %r4,%r5,32
- clrldi %r5,%r6,32
- or %r4,%r4,%r5
-
- li %r11,254
- hc
- extsw %r3,%r3
-
- lwz %r5,-4(%r1)
- std %r4,0(%r5)
-
- lwz %r0,4(%r1)
- mtlr %r0
- blr
diff --git a/sys/boot/powerpc/ps3/lv1call.h b/sys/boot/powerpc/ps3/lv1call.h
deleted file mode 100644
index fb8044825bd0..000000000000
--- a/sys/boot/powerpc/ps3/lv1call.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_LV1CALL_H
-#define _PS3_LV1CALL_H
-
-#include <machine/pte.h>
-
-int lv1_get_physmem(uint64_t *maxmem);
-int lv1_setup_address_space(uint64_t *as_id, uint64_t *ptsize);
-int lv1_insert_pte(u_int ptegidx, struct lpte *pte, int lockflags);
-int lv1_panic(int reboot);
-
-#define L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_MODE_SET 0x0100
-#define L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_SYNC 0x0101
-#define L1GPU_DISPLAY_SYNC_HSYNC 1
-#define L1GPU_DISPLAY_SYNC_VSYNC 2
-#define L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_FLIP 0x0102
-
-int lv1_gpu_open(int);
-int lv1_gpu_context_attribute(int context, int op, int, int, int, int);
-int lv1_gpu_memory_allocate(int size, int, int, int, int, uint64_t *handle,
- uint64_t *paddr);
-int lv1_gpu_context_allocate(uint64_t handle, int, uint64_t *context);
-
-int lv1_open_device(int, int, int /* 0 */);
-int lv1_close_device(int, int);
-int lv1_setup_dma(int, int, uint64_t *dmabase);
-
-#define GELIC_GET_MAC_ADDRESS 0x0001
-#define GELIC_GET_LINK_STATUS 0x0002
-#define GELIC_LINK_UP 0x0001
-#define GELIC_FULL_DUPLEX 0x0002
-#define GELIC_AUTO_NEG 0x0004
-#define GELIC_SPEED_10 0x0010
-#define GELIC_SPEED_100 0x0020
-#define GELIC_SPEED_1000 0x0040
-#define GELIC_GET_VLAN_ID 0x0004
-
-int lv1_net_init(int bus, int dev);
-int lv1_net_control(int bus, int dev, int, int, int, int, uint64_t *);
-int lv1_net_start_tx_dma(int bus, int dev, uint32_t addr, int);
-int lv1_net_start_rx_dma(int bus, int dev, uint32_t addr, int);
-int lv1_net_stop_tx_dma(int bus, int dev, int);
-int lv1_net_stop_rx_dma(int bus, int dev, int);
-
-int lv1_get_repository_node_value(uint64_t lpar_id, uint64_t n1, uint64_t n2,
- uint64_t n3, uint64_t n4, uint64_t *v1, uint64_t *v2);
-
-int lv1_storage_read(uint64_t dev_id, uint64_t region_id, uint64_t start_sector,
- uint64_t sector_count, uint64_t flags, uint64_t buf, uint64_t *tag);
-int lv1_storage_check_async_status(uint64_t dev_id, uint64_t tag,
- uint64_t *status);
-
-#endif
-
diff --git a/sys/boot/powerpc/ps3/main.c b/sys/boot/powerpc/ps3/main.c
deleted file mode 100644
index be8708aadefa..000000000000
--- a/sys/boot/powerpc/ps3/main.c
+++ /dev/null
@@ -1,248 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-
-#define _KERNEL
-#include <machine/cpufunc.h>
-
-#include "bootstrap.h"
-#include "lv1call.h"
-#include "ps3.h"
-#include "ps3devdesc.h"
-
-struct arch_switch archsw;
-extern void *_end;
-
-extern char bootprog_info[];
-
-int ps3_getdev(void **vdev, const char *devspec, const char **path);
-ssize_t ps3_copyin(const void *src, vm_offset_t dest, const size_t len);
-ssize_t ps3_copyout(vm_offset_t src, void *dest, const size_t len);
-ssize_t ps3_readin(const int fd, vm_offset_t dest, const size_t len);
-int ps3_autoload(void);
-int ps3_setcurrdev(struct env_var *ev, int flags, const void *value);
-
-static uint64_t basetb;
-
-int
-main(void)
-{
- uint64_t maxmem = 0;
- void *heapbase;
- int i, err;
- struct ps3_devdesc currdev;
- struct open_file f;
-
- lv1_get_physmem(&maxmem);
-
- ps3mmu_init(maxmem);
-
- /*
- * Set up console.
- */
- cons_probe();
-
- /*
- * Set the heap to one page after the end of the loader.
- */
- heapbase = (void *)(maxmem - 0x80000);
- setheap(heapbase, maxmem);
-
- /*
- * March through the device switch probing for things.
- */
- for (i = 0; devsw[i] != NULL; i++) {
- if (devsw[i]->dv_init != NULL) {
- err = (devsw[i]->dv_init)();
- if (err) {
- printf("\n%s: initialization failed err=%d\n",
- devsw[i]->dv_name, err);
- continue;
- }
- }
-
- currdev.d_dev = devsw[i];
- currdev.d_type = currdev.d_dev->dv_type;
-
- if (strcmp(devsw[i]->dv_name, "cd") == 0) {
- f.f_devdata = &currdev;
- currdev.d_unit = 0;
-
- if (devsw[i]->dv_open(&f, &currdev) == 0)
- break;
- }
-
- if (strcmp(devsw[i]->dv_name, "disk") == 0) {
- f.f_devdata = &currdev;
- currdev.d_unit = 3;
- currdev.d_disk.pnum = 1;
- currdev.d_disk.ptype = PTYPE_GPT;
-
- if (devsw[i]->dv_open(&f, &currdev) == 0)
- break;
- }
-
- if (strcmp(devsw[i]->dv_name, "net") == 0)
- break;
- }
-
- if (devsw[i] == NULL)
- panic("No boot device found!");
- else
- printf("Boot device: %s\n", devsw[i]->dv_name);
-
- /*
- * Get timebase at boot.
- */
- basetb = mftb();
-
- archsw.arch_getdev = ps3_getdev;
- archsw.arch_copyin = ps3_copyin;
- archsw.arch_copyout = ps3_copyout;
- archsw.arch_readin = ps3_readin;
- archsw.arch_autoload = ps3_autoload;
-
- printf("\n%s", bootprog_info);
- printf("Memory: %lldKB\n", maxmem / 1024);
-
- env_setenv("currdev", EV_VOLATILE, ps3_fmtdev(&currdev),
- ps3_setcurrdev, env_nounset);
- env_setenv("loaddev", EV_VOLATILE, ps3_fmtdev(&currdev), env_noset,
- env_nounset);
- setenv("LINES", "24", 1);
- setenv("hw.platform", "ps3", 1);
-
- interact(NULL); /* doesn't return */
-
- return (0);
-}
-
-void
-ppc_exception(int code, vm_offset_t where, register_t msr)
-{
- mtmsr(PSL_IR | PSL_DR | PSL_RI);
- printf("Exception %x at %#lx!\n", code, where);
- printf("Rebooting in 5 seconds...\n");
- delay(10000000);
- lv1_panic(1);
-}
-
-const u_int ns_per_tick = 12;
-
-void
-exit(int code)
-{
- lv1_panic(code);
-}
-
-void
-delay(int usecs)
-{
- uint64_t tb,ttb;
- tb = mftb();
-
- ttb = tb + howmany(usecs * 1000, ns_per_tick);
- while (tb < ttb)
- tb = mftb();
-}
-
-time_t
-getsecs(void)
-{
- return ((time_t)((mftb() - basetb)*ns_per_tick/1000000000));
-}
-
-time_t
-time(time_t *tloc)
-{
- time_t rv;
-
- rv = getsecs();
- if (tloc != NULL)
- *tloc = rv;
-
- return (rv);
-}
-
-ssize_t
-ps3_copyin(const void *src, vm_offset_t dest, const size_t len)
-{
- bcopy(src, (void *)dest, len);
- return (len);
-}
-
-ssize_t
-ps3_copyout(vm_offset_t src, void *dest, const size_t len)
-{
- bcopy((void *)src, dest, len);
- return (len);
-}
-
-ssize_t
-ps3_readin(const int fd, vm_offset_t dest, const size_t len)
-{
- void *buf;
- size_t resid, chunk, get;
- ssize_t got;
- vm_offset_t p;
-
- p = dest;
-
- chunk = min(PAGE_SIZE, len);
- buf = malloc(chunk);
- if (buf == NULL) {
- printf("ps3_readin: buf malloc failed\n");
- return(0);
- }
-
- for (resid = len; resid > 0; resid -= got, p += got) {
- get = min(chunk, resid);
- got = read(fd, buf, get);
- if (got <= 0) {
- if (got < 0)
- printf("ps3_readin: read failed\n");
- break;
- }
-
- bcopy(buf, (void *)p, got);
- }
-
- free(buf);
- return (len - resid);
-}
-
-int
-ps3_autoload(void)
-{
-
- return (0);
-}
-
diff --git a/sys/boot/powerpc/ps3/metadata.c b/sys/boot/powerpc/ps3/metadata.c
deleted file mode 100644
index 6f29c5774ef3..000000000000
--- a/sys/boot/powerpc/ps3/metadata.c
+++ /dev/null
@@ -1,333 +0,0 @@
-/*-
- * Copyright (c) 1998 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- *
- * from: FreeBSD: src/sys/boot/sparc64/loader/metadata.c,v 1.6
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <sys/param.h>
-#include <sys/reboot.h>
-#include <sys/linker.h>
-#include <sys/boot.h>
-
-#include <machine/metadata.h>
-
-#include "bootstrap.h"
-
-int
-md_getboothowto(char *kargs)
-{
- char *cp;
- int howto;
- int active;
- int i;
-
- /* Parse kargs */
- howto = 0;
- if (kargs != NULL) {
- cp = kargs;
- active = 0;
- while (*cp != 0) {
- if (!active && (*cp == '-')) {
- active = 1;
- } else if (active)
- switch (*cp) {
- case 'a':
- howto |= RB_ASKNAME;
- break;
- case 'C':
- howto |= RB_CDROM;
- break;
- case 'd':
- howto |= RB_KDB;
- break;
- case 'D':
- howto |= RB_MULTIPLE;
- break;
- case 'm':
- howto |= RB_MUTE;
- break;
- case 'g':
- howto |= RB_GDB;
- break;
- case 'h':
- howto |= RB_SERIAL;
- break;
- case 'p':
- howto |= RB_PAUSE;
- break;
- case 'r':
- howto |= RB_DFLTROOT;
- break;
- case 's':
- howto |= RB_SINGLE;
- break;
- case 'v':
- howto |= RB_VERBOSE;
- break;
- default:
- active = 0;
- break;
- }
- cp++;
- }
- }
- /* get equivalents from the environment */
- for (i = 0; howto_names[i].ev != NULL; i++)
- if (getenv(howto_names[i].ev) != NULL)
- howto |= howto_names[i].mask;
- if (!strcmp(getenv("console"), "comconsole"))
- howto |= RB_SERIAL;
- if (!strcmp(getenv("console"), "nullconsole"))
- howto |= RB_MUTE;
- return(howto);
-}
-
-/*
- * Copy the environment into the load area starting at (addr).
- * Each variable is formatted as <name>=<value>, with a single nul
- * separating each variable, and a double nul terminating the environment.
- */
-vm_offset_t
-md_copyenv(vm_offset_t addr)
-{
- struct env_var *ep;
-
- /* traverse the environment */
- for (ep = environ; ep != NULL; ep = ep->ev_next) {
- archsw.arch_copyin(ep->ev_name, addr, strlen(ep->ev_name));
- addr += strlen(ep->ev_name);
- archsw.arch_copyin("=", addr, 1);
- addr++;
- if (ep->ev_value != NULL) {
- archsw.arch_copyin(ep->ev_value, addr, strlen(ep->ev_value));
- addr += strlen(ep->ev_value);
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- }
- archsw.arch_copyin("", addr, 1);
- addr++;
- return(addr);
-}
-
-/*
- * Copy module-related data into the load area, where it can be
- * used as a directory for loaded modules.
- *
- * Module data is presented in a self-describing format. Each datum
- * is preceded by a 32-bit identifier and a 32-bit size field.
- *
- * Currently, the following data are saved:
- *
- * MOD_NAME (variable) module name (string)
- * MOD_TYPE (variable) module type (string)
- * MOD_ARGS (variable) module parameters (string)
- * MOD_ADDR sizeof(vm_offset_t) module load address
- * MOD_SIZE sizeof(size_t) module size
- * MOD_METADATA (variable) type-specific metadata
- */
-
-static int align;
-
-#define COPY32(v, a, c) { \
- u_int32_t x = (v); \
- if (c) \
- archsw.arch_copyin(&x, a, sizeof(x)); \
- a += sizeof(x); \
-}
-
-#define MOD_STR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(strlen(s) + 1, a, c) \
- if (c) \
- archsw.arch_copyin(s, a, strlen(s) + 1);\
- a += roundup(strlen(s) + 1, align); \
-}
-
-#define MOD_NAME(a, s, c) MOD_STR(MODINFO_NAME, a, s, c)
-#define MOD_TYPE(a, s, c) MOD_STR(MODINFO_TYPE, a, s, c)
-#define MOD_ARGS(a, s, c) MOD_STR(MODINFO_ARGS, a, s, c)
-
-#define MOD_VAR(t, a, s, c) { \
- COPY32(t, a, c); \
- COPY32(sizeof(s), a, c); \
- if (c) \
- archsw.arch_copyin(&s, a, sizeof(s)); \
- a += roundup(sizeof(s), align); \
-}
-
-#define MOD_ADDR(a, s, c) MOD_VAR(MODINFO_ADDR, a, s, c)
-#define MOD_SIZE(a, s, c) MOD_VAR(MODINFO_SIZE, a, s, c)
-
-#define MOD_METADATA(a, mm, c) { \
- COPY32(MODINFO_METADATA | mm->md_type, a, c);\
- COPY32(mm->md_size, a, c); \
- if (c) \
- archsw.arch_copyin(mm->md_data, a, mm->md_size);\
- a += roundup(mm->md_size, align); \
-}
-
-#define MOD_END(a, c) { \
- COPY32(MODINFO_END, a, c); \
- COPY32(0, a, c); \
-}
-
-vm_offset_t
-md_copymodules(vm_offset_t addr, int kern64)
-{
- struct preloaded_file *fp;
- struct file_metadata *md;
- uint64_t scratch64;
- int c;
-
- c = addr != 0;
- /* start with the first module on the list, should be the kernel */
- for (fp = file_findfile(NULL, NULL); fp != NULL; fp = fp->f_next) {
-
- MOD_NAME(addr, fp->f_name, c); /* this field must come first */
- MOD_TYPE(addr, fp->f_type, c);
- if (fp->f_args)
- MOD_ARGS(addr, fp->f_args, c);
- if (kern64) {
- scratch64 = fp->f_addr;
- MOD_ADDR(addr, scratch64, c);
- scratch64 = fp->f_size;
- MOD_SIZE(addr, scratch64, c);
- } else {
- MOD_ADDR(addr, fp->f_addr, c);
- MOD_SIZE(addr, fp->f_size, c);
- }
- for (md = fp->f_metadata; md != NULL; md = md->md_next) {
- if (!(md->md_type & MODINFOMD_NOCOPY)) {
- MOD_METADATA(addr, md, c);
- }
- }
- }
- MOD_END(addr, c);
- return(addr);
-}
-
-/*
- * Load the information expected by a powerpc kernel.
- *
- * - The 'boothowto' argument is constructed
- * - The 'bootdev' argument is constructed
- * - The kernel environment is copied into kernel space.
- * - Module metadata are formatted and placed in kernel space.
- */
-int
-md_load_dual(char *args, vm_offset_t *modulep, int kern64)
-{
- struct preloaded_file *kfp;
- struct preloaded_file *xp;
- struct file_metadata *md;
- vm_offset_t kernend;
- vm_offset_t addr;
- vm_offset_t envp;
- vm_offset_t size;
- uint64_t scratch64;
- char *rootdevname;
- int howto;
-
- align = kern64 ? 8 : 4;
- howto = md_getboothowto(args);
-
- /*
- * Allow the environment variable 'rootdev' to override the supplied device
- * This should perhaps go to MI code and/or have $rootdev tested/set by
- * MI code before launching the kernel.
- */
- rootdevname = getenv("rootdev");
- if (rootdevname == NULL)
- rootdevname = getenv("currdev");
- /* Try reading the /etc/fstab file to select the root device */
- getrootmount(rootdevname);
-
- /* find the last module in the chain */
- addr = 0;
- for (xp = file_findfile(NULL, NULL); xp != NULL; xp = xp->f_next) {
- if (addr < (xp->f_addr + xp->f_size))
- addr = xp->f_addr + xp->f_size;
- }
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- /* copy our environment */
- envp = addr;
- addr = md_copyenv(addr);
-
- /* pad to a page boundary */
- addr = roundup(addr, PAGE_SIZE);
-
- kernend = 0;
- kfp = file_findfile(NULL, kern64 ? "elf64 kernel" : "elf32 kernel");
- if (kfp == NULL)
- kfp = file_findfile(NULL, "elf kernel");
- if (kfp == NULL)
- panic("can't find kernel file");
- file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto);
- if (kern64) {
- scratch64 = envp;
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof scratch64, &scratch64);
- scratch64 = kernend;
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof scratch64, &scratch64);
- } else {
- file_addmetadata(kfp, MODINFOMD_ENVP, sizeof envp, &envp);
- file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend);
- }
-
- *modulep = addr;
- size = md_copymodules(0, kern64);
- kernend = roundup(addr + size, PAGE_SIZE);
-
- md = file_findmetadata(kfp, MODINFOMD_KERNEND);
- if (kern64) {
- scratch64 = kernend;
- bcopy(&scratch64, md->md_data, sizeof scratch64);
- } else {
- bcopy(&kernend, md->md_data, sizeof kernend);
- }
-
- (void)md_copymodules(addr, kern64);
-
- return(0);
-}
-
-int
-md_load(char *args, vm_offset_t *modulep)
-{
- return (md_load_dual(args, modulep, 0));
-}
-
-int
-md_load64(char *args, vm_offset_t *modulep)
-{
- return (md_load_dual(args, modulep, 1));
-}
-
diff --git a/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c b/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c
deleted file mode 100644
index 3eb991e10ae9..000000000000
--- a/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c
+++ /dev/null
@@ -1,101 +0,0 @@
-/*-
- * Copyright (c) 2001 Benno Rice <benno@FreeBSD.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#define __ELF_WORD_SIZE 64
-
-#include <sys/param.h>
-#include <sys/linker.h>
-
-#include <machine/metadata.h>
-#include <machine/elf.h>
-
-#include <stand.h>
-
-#include "bootstrap.h"
-
-extern char end[];
-extern vm_offset_t reloc; /* From <arch>/conf.c */
-
-int
-ppc64_elf_loadfile(char *filename, u_int64_t dest,
- struct preloaded_file **result)
-{
- int r;
-
- r = __elfN(loadfile)(filename, dest, result);
- if (r != 0)
- return (r);
-
- /*
- * No need to sync the icache for modules: this will
- * be done by the kernel after relocation.
- */
- if (!strcmp((*result)->f_type, "elf kernel"))
- __syncicache((void *) (*result)->f_addr, (*result)->f_size);
- return (0);
-}
-
-int
-ppc64_elf_exec(struct preloaded_file *fp)
-{
- struct file_metadata *fmp;
- vm_offset_t mdp;
- Elf_Ehdr *e;
- int error;
- int (*entry)(u_long, u_long, u_long, void *, u_long);
-
- if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) {
- return(EFTYPE);
- }
- e = (Elf_Ehdr *)&fmp->md_data;
-
- /* Handle function descriptor for ELFv1 kernels */
- if ((e->e_flags & 3) == 2)
- entry = e->e_entry;
- else
- entry = (void *)(uintptr_t)(*(uint64_t *)e->e_entry);
-
- if ((error = md_load64(fp->f_args, &mdp)) != 0)
- return (error);
-
- printf("Kernel entry at %p ...\n", entry);
-
- dev_cleanup();
-
- entry(0 /* FDT */, 0 /* Phys. mem offset */, 0 /* OF entry */,
- (void *)mdp, sizeof(mdp));
-
- panic("exec returned");
-}
-
-struct file_format ppc_elf64 =
-{
- ppc64_elf_loadfile,
- ppc64_elf_exec
-};
diff --git a/sys/boot/powerpc/ps3/ps3.h b/sys/boot/powerpc/ps3/ps3.h
deleted file mode 100644
index 1a770029a5c0..000000000000
--- a/sys/boot/powerpc/ps3/ps3.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_H
-#define _PS3_H
-
-int ps3mmu_init(int maxmem);
-int ps3mmu_map(uint64_t va, uint64_t pa);
-void *ps3mmu_mapdev(uint64_t pa, size_t length);
-
-#endif
diff --git a/sys/boot/powerpc/ps3/ps3bus.h b/sys/boot/powerpc/ps3/ps3bus.h
deleted file mode 100644
index a3b20f3bd88f..000000000000
--- a/sys/boot/powerpc/ps3/ps3bus.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_BUS_H
-#define _PS3_BUS_H
-
-enum {
- PS3_BUS_TYPE_STOR = 5,
-};
-
-enum {
- PS3_DEV_TYPE_STOR_DISK = 0,
- PS3_DEV_TYPE_STOR_CDROM = 5,
- PS3_DEV_TYPE_STOR_FLASH = 14,
-};
-
-#endif
diff --git a/sys/boot/powerpc/ps3/ps3cdrom.c b/sys/boot/powerpc/ps3/ps3cdrom.c
deleted file mode 100644
index d8d41fde49af..000000000000
--- a/sys/boot/powerpc/ps3/ps3cdrom.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand <geoffrey.levand@mail.ru>
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/param.h>
-#include <sys/endian.h>
-#include <machine/stdarg.h>
-#include <stand.h>
-
-#include "bootstrap.h"
-#include "ps3bus.h"
-#include "ps3devdesc.h"
-#include "ps3stor.h"
-
-#define dev_printf(dev, fmt, args...) \
- printf("%s%d: " fmt "\n", dev->d_dev->dv_name, dev->d_unit, ##args)
-
-#ifdef CD_DEBUG
-#define DEBUG(fmt, args...) printf("%s:%d: " fmt "\n", __func__, __LINE__, ##args)
-#else
-#define DEBUG(fmt, args...)
-#endif
-
-static int ps3cdrom_init(void);
-static int ps3cdrom_strategy(void *devdata, int flag, daddr_t dblk,
- size_t size, char *buf, size_t *rsize);
-static int ps3cdrom_open(struct open_file *f, ...);
-static int ps3cdrom_close(struct open_file *f);
-static int ps3cdrom_print(int verbose);
-
-struct devsw ps3cdrom = {
- "cd",
- DEVT_CD,
- ps3cdrom_init,
- ps3cdrom_strategy,
- ps3cdrom_open,
- ps3cdrom_close,
- noioctl,
- ps3cdrom_print,
-};
-
-static struct ps3_stordev stor_dev;
-
-static int ps3cdrom_init(void)
-{
- int err;
-
- err = ps3stor_setup(&stor_dev, PS3_DEV_TYPE_STOR_CDROM);
- if (err)
- return err;
-
- return 0;
-}
-
-static int ps3cdrom_strategy(void *devdata, int flag, daddr_t dblk,
- size_t size, char *buf, size_t *rsize)
-{
- struct ps3_devdesc *dev = (struct ps3_devdesc *) devdata;
- int err;
-
- DEBUG("d_unit=%u dblk=%llu size=%u", dev->d_unit, dblk, size);
-
- flag &= F_MASK;
- if (flag != F_READ) {
- dev_printf(dev, "write operation is not supported!");
- return EROFS;
- }
-
- if (dblk % (stor_dev.sd_blksize / DEV_BSIZE) != 0)
- return EINVAL;
-
- dblk /= (stor_dev.sd_blksize / DEV_BSIZE);
-
- if (size % stor_dev.sd_blksize) {
- dev_printf(dev,
- "size=%u is not multiple of device block size=%llu", size,
- stor_dev.sd_blksize);
- return EINVAL;
- }
-
- if (rsize)
- *rsize = 0;
-
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, dblk,
- size / stor_dev.sd_blksize, 0, buf);
-
- if (!err && rsize)
- *rsize = size;
-
- if (err)
- dev_printf(dev,
- "read operation failed dblk=%llu size=%d err=%d", dblk,
- size, err);
-
- return err;
-}
-
-static int ps3cdrom_open(struct open_file *f, ...)
-{
- char buf[2048];
- va_list ap;
- struct ps3_devdesc *dev;
- int err;
-
- va_start(ap, f);
- dev = va_arg(ap, struct ps3_devdesc *);
- va_end(ap);
-
- if (dev->d_unit > 0) {
- dev_printf(dev, "attempt to open nonexistent disk");
- return ENXIO;
- }
-
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, 16, 1, 0, buf);
- if (err)
- return EIO;
-
- /* Do not attach if not ISO9660 (workaround for buggy firmware) */
- if (memcmp(buf, "\001CD001", 6) != 0)
- return EIO;
-
- return 0;
-}
-
-static int ps3cdrom_close(struct open_file *f)
-{
- return 0;
-}
-
-static int ps3cdrom_print(int verbose)
-{
- return (0);
-}
diff --git a/sys/boot/powerpc/ps3/ps3cons.c b/sys/boot/powerpc/ps3/ps3cons.c
deleted file mode 100644
index fa9ef321c62a..000000000000
--- a/sys/boot/powerpc/ps3/ps3cons.c
+++ /dev/null
@@ -1,173 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "bootstrap.h"
-#include "font.h"
-#include "lv1call.h"
-#include "ps3.h"
-
-#define FONT_SIZE 14
-#define FONT dflt_font_14
-#define XMARGIN 40
-#define YMARGIN 30
-#define BG_COLOR 0x00000000
-#define FG_COLOR 0xffffffff
-
-#define FB_SIZE (16*1024*1024)
-uint64_t fb_paddr = 0;
-uint32_t *fb_vaddr;
-
-int fb_width, fb_height;
-int x, y;
-
-static void ps3cons_probe(struct console *cp);
-static int ps3cons_init(int arg);
-static void ps3cons_putchar(int c);
-static int ps3cons_getchar();
-static int ps3cons_poll();
-
-struct console ps3console = {
- "ps3",
- "Playstation 3 Framebuffer",
- 0,
- ps3cons_probe,
- ps3cons_init,
- ps3cons_putchar,
- ps3cons_getchar,
- ps3cons_poll,
-};
-
-static void
-ps3cons_probe(struct console *cp)
-{
- /* XXX: Get from HV */
- fb_width = 720;
- fb_height = 480;
-
- cp->c_flags |= C_PRESENTIN|C_PRESENTOUT;
-}
-
-static int
-ps3cons_init(int arg)
-{
- uint64_t fbhandle, fbcontext;
- int i;
-
- lv1_gpu_open(0);
- lv1_gpu_context_attribute(0, L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_MODE_SET,
- 0,0,0,0);
- lv1_gpu_context_attribute(0, L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_MODE_SET,
- 0,0,1,0);
- lv1_gpu_context_attribute(0, L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_SYNC,
- 0,L1GPU_DISPLAY_SYNC_VSYNC,0,0);
- lv1_gpu_context_attribute(0, L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_SYNC,
- 1,L1GPU_DISPLAY_SYNC_VSYNC,0,0);
- lv1_gpu_memory_allocate(FB_SIZE, 0, 0, 0, 0, &fbhandle, &fb_paddr);
- lv1_gpu_context_allocate(fbhandle, 0, &fbcontext);
-
- lv1_gpu_context_attribute(fbcontext,
- L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_FLIP, 0, 0, 0, 0);
- lv1_gpu_context_attribute(fbcontext,
- L1GPU_CONTEXT_ATTRIBUTE_DISPLAY_FLIP, 1, 0, 0, 0);
-
- fb_vaddr = ps3mmu_mapdev(fb_paddr, FB_SIZE);
-
- x = y = 0;
-
- /* Blank console */
- for (i = 0; i < fb_width*fb_height; i++)
- fb_vaddr[i] = BG_COLOR;
-
- return (0);
-}
-
-static void
-ps3cons_putchar(int c)
-{
- uint32_t fg, bg;
- uint32_t *addr;
- int i, j, k;
- u_char *p;
-
- fg = FG_COLOR;
- bg = BG_COLOR;
-
- switch (c) {
- case '\0':
- break;
- case '\r':
- x = 0;
- break;
- case '\n':
- y += FONT_SIZE;
- break;
- case '\b':
- x = max(0, x - 8);
- break;
- default:
- /* Wrap long lines */
- if (x + XMARGIN + FONT_SIZE > fb_width - XMARGIN) {
- y += FONT_SIZE;
- x = 0;
- }
-
- if (y + YMARGIN + FONT_SIZE > fb_height - YMARGIN)
- y = 0;
-
- addr = fb_vaddr + (y + YMARGIN)*fb_width + (x + XMARGIN);
- p = FONT + c*FONT_SIZE;
-
- for (i = 0; i < FONT_SIZE; i++) {
- for (j = 0, k = 7; j < 8; j++, k--) {
- if ((p[i] & (1 << k)) == 0)
- *(addr + j) = bg;
- else
- *(addr + j) = fg;
- }
-
- addr += fb_width;
- }
-
- x += 8;
- break;
- }
-}
-
-static int
-ps3cons_getchar()
-{
- return (-1);
-}
-
-static int
-ps3cons_poll()
-{
- return (0);
-}
-
diff --git a/sys/boot/powerpc/ps3/ps3devdesc.h b/sys/boot/powerpc/ps3/ps3devdesc.h
deleted file mode 100644
index 5a6e52ff5277..000000000000
--- a/sys/boot/powerpc/ps3/ps3devdesc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*-
- * Copyright (C) 2000 Benno Rice.
- * Copyright (C) 2007 Semihalf, Rafal Jaworowski <raj@semihalf.com>
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_DEV_DESC_H
-#define _PS3_DEV_DESC_H
-
-/* Note: Must match the 'struct devdesc' in bootstrap.h */
-struct ps3_devdesc {
- struct devsw *d_dev;
- int d_type;
- int d_unit;
-
- union {
- struct {
- void *data;
- int pnum;
- int ptype;
- } disk;
- } d_kind;
-};
-
-#define d_disk d_kind.disk
-
-#define PTYPE_BSDLABEL 1
-#define PTYPE_GPT 2
-
-#endif
diff --git a/sys/boot/powerpc/ps3/ps3disk.c b/sys/boot/powerpc/ps3/ps3disk.c
deleted file mode 100644
index c33a023e70a6..000000000000
--- a/sys/boot/powerpc/ps3/ps3disk.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*-
- * Copyright (C) 2008 Semihalf, Rafal Jaworowski
- * Copyright (C) 2009 Semihalf, Piotr Ziecik
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#include <sys/endian.h>
-#include <machine/stdarg.h>
-#include <stand.h>
-#include <uuid.h>
-
-#define FSTYPENAMES
-#include <sys/disklabel.h>
-#include <sys/diskmbr.h>
-#include <sys/gpt.h>
-
-#include "bootstrap.h"
-#include "ps3bus.h"
-#include "ps3devdesc.h"
-#include "ps3stor.h"
-
-#define dev_printf(dev, fmt, args...) \
- printf("%s%d: " fmt "\n" , dev->d_dev->dv_name, dev->d_unit, ##args)
-
-#ifdef DISK_DEBUG
-#define DEBUG(fmt, args...) printf("%s:%d: " fmt "\n" , __func__ , __LINE__, ##args)
-#else
-#define DEBUG(fmt, args...)
-#endif
-
-struct open_dev;
-
-static int ps3disk_open_gpt(struct ps3_devdesc *dev, struct open_dev *od);
-static void ps3disk_uuid_letoh(uuid_t *uuid);
-
-static int ps3disk_init(void);
-static int ps3disk_strategy(void *devdata, int flag, daddr_t dblk,
- size_t size, char *buf, size_t *rsize);
-static int ps3disk_open(struct open_file *f, ...);
-static int ps3disk_close(struct open_file *f);
-static int ps3disk_print(int verbose);
-
-struct devsw ps3disk = {
- "disk",
- DEVT_DISK,
- ps3disk_init,
- ps3disk_strategy,
- ps3disk_open,
- ps3disk_close,
- noioctl,
- ps3disk_print,
-};
-
-struct gpt_part {
- int gp_index;
- uuid_t gp_type;
- uint64_t gp_start;
- uint64_t gp_end;
-};
-
-struct open_dev {
- uint64_t od_start;
-
- union {
- struct {
- int nparts;
- struct gpt_part *parts;
- } gpt;
- } od_kind;
-};
-
-#define od_gpt_nparts od_kind.gpt.nparts
-#define od_gpt_parts od_kind.gpt.parts
-
-static struct ps3_stordev stor_dev;
-
-static int ps3disk_init(void)
-{
- int err;
-
- err = ps3stor_setup(&stor_dev, PS3_DEV_TYPE_STOR_DISK);
- if (err)
- return err;
-
- return 0;
-}
-
-static int ps3disk_strategy(void *devdata, int flag, daddr_t dblk,
- size_t size, char *buf, size_t *rsize)
-{
- struct ps3_devdesc *dev = (struct ps3_devdesc *) devdata;
- struct open_dev *od = (struct open_dev *) dev->d_disk.data;
- int err;
-
- flag &= F_MASK;
- if (flag != F_READ) {
- dev_printf(dev, "write operation is not supported!\n");
- return EROFS;
- }
-
- if (size % stor_dev.sd_blksize) {
- dev_printf(dev, "size=%u is not multiple of device block size=%llu\n",
- size, stor_dev.sd_blksize);
- return EIO;
- }
-
- if (rsize)
- *rsize = 0;
-
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, od->od_start + dblk,
- size / stor_dev.sd_blksize, 0, buf);
-
- if (!err && rsize)
- *rsize = size;
-
- if (err)
- dev_printf(dev, "read operation failed dblk=%llu size=%d err=%d\n",
- dblk, size, err);
-
- return err;
-}
-
-static int ps3disk_open(struct open_file *f, ...)
-{
- va_list ap;
- struct ps3_devdesc *dev;
- struct open_dev *od;
- int err;
-
- va_start(ap, f);
- dev = va_arg(ap, struct ps3_devdesc *);
- va_end(ap);
-
- od = malloc(sizeof(struct open_dev));
- if (!od) {
- dev_printf(dev, "couldn't allocate memory for new open_dev\n");
- return ENOMEM;
- }
-
- err = ps3disk_open_gpt(dev, od);
-
- if (err) {
- dev_printf(dev, "couldn't open GPT disk error=%d\n", err);
- free(od);
- } else {
- ((struct ps3_devdesc *) (f->f_devdata))->d_disk.data = od;
- }
-
- return err;
-}
-
-static int ps3disk_close(struct open_file *f)
-{
- struct ps3_devdesc *dev = f->f_devdata;
- struct open_dev *od = dev->d_disk.data;
-
- if (dev->d_disk.ptype == PTYPE_GPT && od->od_gpt_nparts)
- free(od->od_gpt_parts);
-
- free(od);
-
- dev->d_disk.data = NULL;
-
- return 0;
-}
-
-static int ps3disk_print(int verbose)
-{
- return (0);
-}
-
-static int ps3disk_open_gpt(struct ps3_devdesc *dev, struct open_dev *od)
-{
- char buf[512];
- struct gpt_hdr *hdr;
- struct gpt_ent *ent;
- daddr_t slba, elba, lba;
- int nparts, eps, i, part, err;
-
- od->od_gpt_nparts = 0;
- od->od_gpt_parts = NULL;
-
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, 0, 1, 0, buf);
- if (err) {
- err = EIO;
- goto out;
- }
-
- if (le16toh(*((uint16_t *) (buf + DOSMAGICOFFSET))) != DOSMAGIC) {
- err = ENXIO;
- goto out;
- }
-
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, 1, 1, 0, buf);
- if (err) {
- err = EIO;
- goto out;
- }
-
- hdr = (struct gpt_hdr *) buf;
-
- if (bcmp(hdr->hdr_sig, GPT_HDR_SIG, sizeof(hdr->hdr_sig)) ||
- le64toh(hdr->hdr_lba_self) != 1 || le32toh(hdr->hdr_revision) < 0x00010000 ||
- le32toh(hdr->hdr_entsz) < sizeof(struct gpt_ent) ||
- stor_dev.sd_blksize % le32toh(hdr->hdr_entsz) != 0) {
- err = ENXIO;
- goto out;
- }
-
- nparts = 0;
- eps = stor_dev.sd_blksize / le32toh(hdr->hdr_entsz);
- slba = le64toh(hdr->hdr_lba_table);
- elba = slba + le32toh(hdr->hdr_entries) / eps;
-
- for (lba = slba; lba < elba; lba++) {
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, lba, 1, 0, buf);
- if (err) {
- err = EIO;
- goto out;
- }
-
- ent = (struct gpt_ent *) buf;
-
- for (i = 0; i < eps; i++) {
- if (uuid_is_nil(&ent[i].ent_type, NULL) ||
- le64toh(ent[i].ent_lba_start) == 0 ||
- le64toh(ent[i].ent_lba_end) < le64toh(ent[i].ent_lba_start))
- continue;
-
- nparts++;
- }
- }
-
- if (nparts) {
- od->od_gpt_nparts = nparts;
-
- od->od_gpt_parts = malloc(nparts * sizeof(struct gpt_part));
- if (!od->od_gpt_parts) {
- err = ENOMEM;
- goto out;
- }
-
- for (lba = slba, part = 0; lba < elba; lba++) {
- err = ps3stor_read_sectors(&stor_dev, dev->d_unit, lba, 1, 0, buf);
- if (err) {
- err = EIO;
- goto out;
- }
-
- ent = (struct gpt_ent *) buf;
-
- for (i = 0; i < eps; i++) {
- if (uuid_is_nil(&ent[i].ent_type, NULL) ||
- le64toh(ent[i].ent_lba_start) == 0 ||
- le64toh(ent[i].ent_lba_end) < le64toh(ent[i].ent_lba_start))
- continue;
-
- od->od_gpt_parts[part].gp_index = (lba - slba) * eps + i + 1;
- od->od_gpt_parts[part].gp_type = ent[i].ent_type;
- od->od_gpt_parts[part].gp_start = le64toh(ent[i].ent_lba_start);
- od->od_gpt_parts[part].gp_end = le64toh(ent[i].ent_lba_end);
- ps3disk_uuid_letoh(&od->od_gpt_parts[part].gp_type);
- part++;
- }
- }
- }
-
- dev->d_disk.ptype = PTYPE_GPT;
-
- if (od->od_gpt_nparts && !dev->d_disk.pnum)
- dev->d_disk.pnum = od->od_gpt_parts[0].gp_index;
-
- for (i = 0; i < od->od_gpt_nparts; i++)
- if (od->od_gpt_parts[i].gp_index == dev->d_disk.pnum)
- od->od_start = od->od_gpt_parts[i].gp_start;
-
- err = 0;
-
-out:
-
- if (err && od->od_gpt_parts)
- free(od->od_gpt_parts);
-
- return err;
-}
-
-static void ps3disk_uuid_letoh(uuid_t *uuid)
-{
- uuid->time_low = le32toh(uuid->time_low);
- uuid->time_mid = le16toh(uuid->time_mid);
- uuid->time_hi_and_version = le16toh(uuid->time_hi_and_version);
-}
diff --git a/sys/boot/powerpc/ps3/ps3mmu.c b/sys/boot/powerpc/ps3/ps3mmu.c
deleted file mode 100644
index 08dcf75d2839..000000000000
--- a/sys/boot/powerpc/ps3/ps3mmu.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include <stdint.h>
-
-#define _KERNEL
-#include <machine/cpufunc.h>
-#include <machine/psl.h>
-#include <machine/pte.h>
-#include <machine/slb.h>
-#include <machine/param.h>
-
-#include "bootstrap.h"
-#include "lv1call.h"
-#include "ps3.h"
-
-register_t pteg_count, pteg_mask;
-uint64_t as_id;
-uint64_t virtual_avail;
-
-int
-ps3mmu_map(uint64_t va, uint64_t pa)
-{
- struct lpte pt;
- int shift;
- uint64_t vsid, ptegidx;
-
- if (pa < 0x8000000) { /* Phys mem? */
- pt.pte_hi = LPTE_BIG;
- pt.pte_lo = LPTE_M;
- shift = 24;
- vsid = 0;
- } else {
- pt.pte_hi = 0;
- pt.pte_lo = LPTE_I | LPTE_G | LPTE_M | LPTE_NOEXEC;
- shift = ADDR_PIDX_SHFT;
- vsid = 1;
- }
-
- pt.pte_hi |= (vsid << LPTE_VSID_SHIFT) |
- (((uint64_t)(va & ADDR_PIDX) >> ADDR_API_SHFT64) & LPTE_API);
- pt.pte_lo |= pa;
- ptegidx = vsid ^ (((uint64_t)va & ADDR_PIDX) >> shift);
-
- pt.pte_hi |= LPTE_LOCKED | LPTE_VALID;
- ptegidx &= pteg_mask;
-
- return (lv1_insert_pte(ptegidx, &pt, LPTE_LOCKED));
-}
-
-void *
-ps3mmu_mapdev(uint64_t pa, size_t length)
-{
- uint64_t spa;
- void *mapstart;
- int err;
-
- mapstart = (void *)(uintptr_t)virtual_avail;
-
- for (spa = pa; spa < pa + length; spa += PAGE_SIZE) {
- err = ps3mmu_map(virtual_avail, spa);
- virtual_avail += PAGE_SIZE;
- if (err != 0)
- return (NULL);
- }
-
- return (mapstart);
-}
-
-int
-ps3mmu_init(int maxmem)
-{
- uint64_t ptsize;
- int i;
-
- i = lv1_setup_address_space(&as_id, &ptsize);
- pteg_count = ptsize / sizeof(struct lpteg);
- pteg_mask = pteg_count - 1;
-
- for (i = 0; i < maxmem; i += 16*1024*1024)
- ps3mmu_map(i,i);
-
- virtual_avail = 0x10000000;
-
- __asm __volatile ("slbia; slbmte %0, %1; slbmte %2,%3" ::
- "r"((0 << SLBV_VSID_SHIFT) | SLBV_L), "r"(0 | SLBE_VALID),
- "r"(1 << SLBV_VSID_SHIFT),
- "r"((1 << SLBE_ESID_SHIFT) | SLBE_VALID | 1));
-
- mtmsr(PSL_IR | PSL_DR | PSL_RI | PSL_ME);
-
- return (0);
-}
-
diff --git a/sys/boot/powerpc/ps3/ps3net.c b/sys/boot/powerpc/ps3/ps3net.c
deleted file mode 100644
index 142eab8243a6..000000000000
--- a/sys/boot/powerpc/ps3/ps3net.c
+++ /dev/null
@@ -1,278 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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 <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip.h>
-
-#define _KERNEL
-#include <machine/cpufunc.h>
-
-#include <stand.h>
-#include <net.h>
-#include <netif.h>
-#include "bootstrap.h"
-#include "lv1call.h"
-#include "ps3.h"
-
-#define GELIC_DESCR_OWNED 0xa0000000
-#define GELIC_CMDSTAT_NOIPSEC 0x00080000
-#define GELIC_CMDSTAT_LAST 0x00040000
-#define GELIC_RXERRORS 0x7def8000
-
-#define GELIC_POLL_PERIOD 100 /* microseconds */
-
-static int ps3net_probe(struct netif *, void *);
-static int ps3net_match(struct netif *, void *);
-static void ps3net_init(struct iodesc *, void *);
-static int ps3net_get(struct iodesc *, void *, size_t, time_t);
-static int ps3net_put(struct iodesc *, void *, size_t);
-static void ps3net_end(struct netif *);
-
-struct netif_stats ps3net_stats[1];
-struct netif_dif ps3net_ifs[] = {{0, 1, ps3net_stats, 0}};
-
-/* XXX: Get from firmware, not hardcoding */
-static int busid = 1;
-static int devid = 0;
-static int vlan;
-static uint64_t dma_base;
-
-struct gelic_dmadesc {
- uint32_t paddr;
- uint32_t len;
- uint32_t next;
- uint32_t cmd_stat;
- uint32_t result_size;
- uint32_t valid_size;
- uint32_t data_stat;
- uint32_t rxerror;
-};
-
-struct netif_driver ps3net = {
- "net",
- ps3net_match,
- ps3net_probe,
- ps3net_init,
- ps3net_get,
- ps3net_put,
- ps3net_end,
- ps3net_ifs, 1
-};
-
-static int
-ps3net_match(struct netif *nif, void *machdep_hint)
-{
- return (1);
-}
-
-static int
-ps3net_probe(struct netif *nif, void *machdep_hint)
-{
- return (0);
-}
-
-static int
-ps3net_put(struct iodesc *desc, void *pkt, size_t len)
-{
- volatile static struct gelic_dmadesc txdesc __aligned(32);
- volatile static char txbuf[1536] __aligned(128);
- size_t sendlen;
- int err;
-
-#if defined(NETIF_DEBUG)
- struct ether_header *eh;
-
- printf("net_put: desc %p, pkt %p, len %d\n", desc, pkt, len);
- eh = pkt;
- printf("dst: %s ", ether_sprintf(eh->ether_dhost));
- printf("src: %s ", ether_sprintf(eh->ether_shost));
- printf("type: 0x%x\n", eh->ether_type & 0xffff);
-#endif
-
- while (txdesc.cmd_stat & GELIC_DESCR_OWNED) {
- printf("Stalled XMIT!\n");
- delay(10);
- }
-
- /*
- * We must add 4 extra bytes to this packet to store the destination
- * VLAN.
- */
- memcpy(txbuf, pkt, 12);
- sendlen = 12;
-
- if (vlan >= 0) {
- sendlen += 4;
- ((uint8_t *)txbuf)[12] = 0x81;
- ((uint8_t *)txbuf)[13] = 0x00;
- ((uint8_t *)txbuf)[14] = vlan >> 8;
- ((uint8_t *)txbuf)[15] = vlan & 0xff;
- }
- memcpy((void *)txbuf + sendlen, pkt + 12, len - 12);
- sendlen += len - 12;
-
- bzero(&txdesc, sizeof(txdesc));
- txdesc.paddr = dma_base + (uint32_t)txbuf;
- txdesc.len = sendlen;
- txdesc.cmd_stat = GELIC_CMDSTAT_NOIPSEC | GELIC_CMDSTAT_LAST |
- GELIC_DESCR_OWNED;
-
- powerpc_sync();
-
- do {
- err = lv1_net_start_tx_dma(busid, devid,
- dma_base + (uint32_t)&txdesc, 0);
- delay(1);
- if (err != 0)
- printf("TX Error: %d\n",err);
- } while (err != 0);
-
- return (len);
-}
-
-static int
-ps3net_get(struct iodesc *desc, void *pkt, size_t len, time_t timeout)
-{
- volatile static struct gelic_dmadesc rxdesc __aligned(32);
- volatile static char rxbuf[1536] __aligned(128);
- int err = 0;
-
- if (len == 0)
- goto restartdma;
-
- timeout *= 1000000; /* convert to microseconds */
- while (rxdesc.cmd_stat & GELIC_DESCR_OWNED) {
- if (timeout < GELIC_POLL_PERIOD)
- return (ETIMEDOUT);
- delay(GELIC_POLL_PERIOD);
- timeout -= GELIC_POLL_PERIOD;
- }
-
- delay(200);
- if (rxdesc.rxerror & GELIC_RXERRORS) {
- err = -1;
- goto restartdma;
- }
-
- /*
- * Copy the packet to the receive buffer, leaving out the
- * 2 byte VLAN header.
- */
- len = min(len, rxdesc.valid_size - 2);
- memcpy(pkt, (u_char *)rxbuf + 2, len);
- err = len;
-
-#if defined(NETIF_DEBUG)
-{
- struct ether_header *eh;
-
- printf("net_get: desc %p, pkt %p, len %d\n", desc, pkt, len);
- eh = pkt;
- printf("dst: %s ", ether_sprintf(eh->ether_dhost));
- printf("src: %s ", ether_sprintf(eh->ether_shost));
- printf("type: 0x%x\n", eh->ether_type & 0xffff);
-}
-#endif
-
-restartdma:
- lv1_net_stop_rx_dma(busid, devid, 0);
- powerpc_sync();
-
- bzero(&rxdesc, sizeof(rxdesc));
- rxdesc.paddr = dma_base + (uint32_t)rxbuf;
- rxdesc.len = sizeof(rxbuf);
- rxdesc.next = 0;
- rxdesc.cmd_stat = GELIC_DESCR_OWNED;
- powerpc_sync();
-
- lv1_net_start_rx_dma(busid, devid, dma_base + (uint32_t)&rxdesc, 0);
-
- return (err);
-}
-
-static void
-ps3net_init(struct iodesc *desc, void *machdep_hint)
-{
- uint64_t mac, val;
- int i,err;
-
- err = lv1_open_device(busid, devid, 0);
-
- lv1_net_stop_tx_dma(busid, devid, 0);
- lv1_net_stop_rx_dma(busid, devid, 0);
-
- /*
- * Wait for link to come up
- */
-
- for (i = 0; i < 1000; i++) {
- lv1_net_control(busid, devid, GELIC_GET_LINK_STATUS, 2, 0,
- 0, &val);
- if (val & GELIC_LINK_UP)
- break;
- delay(500);
- }
-
- /*
- * Set up DMA IOMMU entries
- */
-
- err = lv1_setup_dma(busid, devid, &dma_base);
-
- /*
- * Get MAC address and VLAN IDs
- */
-
- lv1_net_control(busid, devid, GELIC_GET_MAC_ADDRESS, 0, 0, 0, &mac);
- bcopy(&((uint8_t *)&mac)[2], desc->myea, sizeof(desc->myea));
-
- vlan = -1;
- err = lv1_net_control(busid, devid, GELIC_GET_VLAN_ID, 2, 0,
- 0, &val);
- if (err == 0)
- vlan = val;
-
- /*
- * Start RX DMA engine
- */
-
- ps3net_get(NULL, NULL, 0, 0);
-}
-
-static void
-ps3net_end(struct netif *nif)
-{
- lv1_close_device(busid, devid);
-}
-
diff --git a/sys/boot/powerpc/ps3/ps3repo.c b/sys/boot/powerpc/ps3/ps3repo.c
deleted file mode 100644
index 006476925479..000000000000
--- a/sys/boot/powerpc/ps3/ps3repo.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#include <stand.h>
-
-#include "lv1call.h"
-#include "ps3.h"
-#include "ps3repo.h"
-
-static uint64_t make_n1(const char *text, unsigned int index)
-{
- uint64_t n1;
-
- n1 = 0;
- strncpy((char *) &n1, text, sizeof(n1));
- n1 = (n1 >> 32) + index;
-
- return n1;
-}
-
-static uint64_t make_n(const char *text, unsigned int index)
-{
- uint64_t n;
-
- n = 0;
- strncpy((char *) &n, text, sizeof(n));
- n = n + index;
-
- return n;
-}
-
-int ps3repo_read_bus_type(unsigned int bus_index, uint64_t *bus_type)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("type", 0), 0, 0, &v1, &v2);
-
- *bus_type = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_id(unsigned int bus_index, uint64_t *bus_id)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("id", 0), 0, 0, &v1, &v2);
-
- *bus_id = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_num_dev(unsigned int bus_index, uint64_t *num_dev)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("num_dev", 0), 0, 0, &v1, &v2);
-
- *num_dev = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_type(unsigned int bus_index, unsigned int dev_index, uint64_t *dev_type)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("type", 0), 0, &v1, &v2);
-
- *dev_type = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_id(unsigned int bus_index, unsigned int dev_index, uint64_t *dev_id)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("id", 0), 0, &v1, &v2);
-
- *dev_id = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_blk_size(unsigned int bus_index, unsigned int dev_index, uint64_t *blk_size)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("blk_size", 0), 0, &v1, &v2);
-
- *blk_size = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_nblocks(unsigned int bus_index, unsigned int dev_index, uint64_t *nblocks)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("n_blocks", 0), 0, &v1, &v2);
-
- *nblocks = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_nregs(unsigned int bus_index, unsigned int dev_index, uint64_t *nregs)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("n_regs", 0), 0, &v1, &v2);
-
- *nregs = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_reg_id(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_id)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("region", reg_index), make_n("id", 0), &v1, &v2);
-
- *reg_id = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_reg_start(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_start)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("region", reg_index), make_n("start", 0), &v1, &v2);
-
- *reg_start = v1;
-
- return err;
-}
-
-int ps3repo_read_bus_dev_reg_size(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_size)
-{
- uint64_t v1, v2;
- int err;
-
- err = lv1_get_repository_node_value(PS3_LPAR_ID_PME, make_n1("bus", bus_index),
- make_n("dev", dev_index), make_n("region", reg_index), make_n("size", 0), &v1, &v2);
-
- *reg_size = v1;
-
- return err;
-}
-
-int ps3repo_find_bus_by_type(uint64_t bus_type, unsigned int *bus_index)
-{
- unsigned int i;
- uint64_t type;
- int err;
-
- for (i = 0; i < 10; i++) {
- err = ps3repo_read_bus_type(i, &type);
- if (err) {
- *bus_index = (unsigned int) -1;
- return err;
- }
-
- if (type == bus_type) {
- *bus_index = i;
- return 0;
- }
- }
-
- *bus_index = (unsigned int) -1;
-
- return ENODEV;
-}
-
-int ps3repo_find_bus_dev_by_type(unsigned int bus_index, uint64_t dev_type,
- unsigned int *dev_index)
-{
- unsigned int i;
- uint64_t type;
- int err;
-
- for (i = 0; i < 10; i++) {
- err = ps3repo_read_bus_dev_type(bus_index, i, &type);
- if (err) {
- *dev_index = (unsigned int) -1;
- return err;
- }
-
- if (type == dev_type) {
- *dev_index = i;
- return 0;
- }
- }
-
- *dev_index = (unsigned int) -1;
-
- return ENODEV;
-}
diff --git a/sys/boot/powerpc/ps3/ps3repo.h b/sys/boot/powerpc/ps3/ps3repo.h
deleted file mode 100644
index 68001df3509b..000000000000
--- a/sys/boot/powerpc/ps3/ps3repo.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_REPO_H
-#define _PS3_REPO_H
-
-#define PS3_LPAR_ID_PME 1
-
-int ps3repo_read_bus_type(unsigned int bus_index, uint64_t *bus_type);
-int ps3repo_read_bus_id(unsigned int bus_index, uint64_t *bus_id);
-int ps3repo_read_bus_num_dev(unsigned int bus_index, uint64_t *num_dev);
-int ps3repo_read_bus_dev_type(unsigned int bus_index, unsigned int dev_index, uint64_t *dev_type);
-int ps3repo_read_bus_dev_id(unsigned int bus_index, unsigned int dev_index, uint64_t *dev_id);
-int ps3repo_read_bus_dev_blk_size(unsigned int bus_index, unsigned int dev_index, uint64_t *blk_size);
-int ps3repo_read_bus_dev_nblocks(unsigned int bus_index, unsigned int dev_index, uint64_t *nblocks);
-int ps3repo_read_bus_dev_nregs(unsigned int bus_index, unsigned int dev_index, uint64_t *nregs);
-int ps3repo_read_bus_dev_reg_id(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_id);
-int ps3repo_read_bus_dev_reg_start(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_start);
-int ps3repo_read_bus_dev_reg_size(unsigned int bus_index, unsigned int dev_index,
- unsigned int reg_index, uint64_t *reg_size);
-int ps3repo_find_bus_by_type(uint64_t bus_type, unsigned int *bus_index);
-int ps3repo_find_bus_dev_by_type(unsigned int bus_index, uint64_t dev_type,
- unsigned int *dev_index);
-
-#endif
diff --git a/sys/boot/powerpc/ps3/ps3stor.c b/sys/boot/powerpc/ps3/ps3stor.c
deleted file mode 100644
index bbfc56a7ae2a..000000000000
--- a/sys/boot/powerpc/ps3/ps3stor.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#include <stand.h>
-
-#include "bootstrap.h"
-#include "lv1call.h"
-#include "ps3bus.h"
-#include "ps3repo.h"
-#include "ps3stor.h"
-
-int ps3stor_setup(struct ps3_stordev *sd, int type)
-{
- unsigned int i;
- int err;
-
- sd->sd_type = type;
-
- err = ps3repo_find_bus_by_type(PS3_BUS_TYPE_STOR, &sd->sd_busidx);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_id(sd->sd_busidx, &sd->sd_busid);
- if (err)
- goto out;
-
- err = ps3repo_find_bus_dev_by_type(sd->sd_busidx, type, &sd->sd_devidx);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_id(sd->sd_busidx, sd->sd_devidx,
- &sd->sd_devid);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_blk_size(sd->sd_busidx, sd->sd_devidx,
- &sd->sd_blksize);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_nblocks(sd->sd_busidx, sd->sd_devidx,
- &sd->sd_nblocks);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_nregs(sd->sd_busidx, sd->sd_devidx,
- &sd->sd_nregs);
- if (err)
- goto out;
-
- for (i = 0; i < sd->sd_nregs; i++) {
- err = ps3repo_read_bus_dev_reg_id(sd->sd_busidx, sd->sd_devidx,
- i, &sd->sd_regs[i].sr_id);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_reg_start(sd->sd_busidx,
- sd->sd_devidx, i, &sd->sd_regs[i].sr_start);
- if (err)
- goto out;
-
- err = ps3repo_read_bus_dev_reg_size(sd->sd_busidx,
- sd->sd_devidx, i, &sd->sd_regs[i].sr_size);
- if (err)
- goto out;
- }
-
- if (!sd->sd_nregs) {
- err = ENODEV;
- goto out;
- }
-
- err = lv1_open_device(sd->sd_busid, sd->sd_devid, 0);
- if (err)
- goto out;
-
- err = lv1_setup_dma(sd->sd_busid, sd->sd_devid, &sd->sd_dmabase);
- if (err)
- goto close_dev;
-
- return 0;
-
-close_dev:
-
- lv1_close_device(sd->sd_busid, sd->sd_devid);
-
-out:
-
- return err;
-}
-
-static char dma_buf[2048] __aligned(2048);
-
-int ps3stor_read_sectors(struct ps3_stordev *sd, int regidx,
- uint64_t start_sector, uint64_t sector_count, uint64_t flags, char *buf)
-{
-#define MIN(a, b) ((a) <= (b) ? (a) : (b))
-#define BOUNCE_SECTORS (sizeof(dma_buf) / sd->sd_blksize)
-#define ASYNC_STATUS_POLL_PERIOD 100 /* microseconds */
-
- struct ps3_storreg *reg = &sd->sd_regs[regidx];
- uint64_t nleft, nread, nsectors;
- uint64_t tag, status;
- unsigned int timeout;
- int err = 0;
-
- nleft = sector_count;
- nread = 0;
-
- while (nleft) {
- nsectors = MIN(nleft, BOUNCE_SECTORS);
-
- err = lv1_storage_read(sd->sd_devid, reg->sr_id,
- start_sector + nread, nsectors, flags, (uint32_t)dma_buf,
- &tag);
- if (err)
- return err;
-
- timeout = 5000000; /* microseconds */
-
- while (1) {
- if (timeout < ASYNC_STATUS_POLL_PERIOD)
- return ETIMEDOUT;
-
- err = lv1_storage_check_async_status(sd->sd_devid, tag,
- &status);
- if (!err && !status)
- break;
-
- delay(ASYNC_STATUS_POLL_PERIOD);
- timeout -= ASYNC_STATUS_POLL_PERIOD;
- }
-
- if (status != 0)
- return EIO;
-
- memcpy(buf + nread * sd->sd_blksize, (u_char *)dma_buf,
- nsectors * sd->sd_blksize);
- nread += nsectors;
- nleft -= nsectors;
- }
-
- return err;
-
-#undef MIN
-#undef BOUNCE_SECTORS
-#undef ASYNC_STATUS_POLL_PERIOD
-}
-
-void ps3stor_print(struct ps3_stordev *sd)
-{
-}
diff --git a/sys/boot/powerpc/ps3/ps3stor.h b/sys/boot/powerpc/ps3/ps3stor.h
deleted file mode 100644
index 350b716f7aa1..000000000000
--- a/sys/boot/powerpc/ps3/ps3stor.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*-
- * Copyright (C) 2011 glevand (geoffrey.levand@mail.ru)
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _PS3_STOR_H
-#define _PS3_STOR_H
-
-#define PS3_STOR_DEV_MAXREGS 8
-
-struct ps3_storreg {
- uint64_t sr_id;
- uint64_t sr_start;
- uint64_t sr_size;
-};
-
-struct ps3_stordev {
- int sd_type;
- unsigned int sd_busidx;
- unsigned int sd_devidx;
- uint64_t sd_busid;
- uint64_t sd_devid;
- uint64_t sd_blksize;
- uint64_t sd_nblocks;
- uint64_t sd_nregs;
- struct ps3_storreg sd_regs[PS3_STOR_DEV_MAXREGS];
- uint64_t sd_dmabase;
-};
-
-int ps3stor_setup(struct ps3_stordev *sd, int type);
-
-int ps3stor_read_sectors(struct ps3_stordev *sd, int regidx,
- uint64_t start_sector, uint64_t sector_count, uint64_t flags, char *buf);
-
-void ps3stor_print(struct ps3_stordev *sd);
-
-#endif
diff --git a/sys/boot/powerpc/ps3/start.S b/sys/boot/powerpc/ps3/start.S
deleted file mode 100644
index 570b3f52cc68..000000000000
--- a/sys/boot/powerpc/ps3/start.S
+++ /dev/null
@@ -1,169 +0,0 @@
-/*-
- * Copyright (C) 2010 Nathan Whitehorn
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 TOOLS GMBH 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.
- *
- * $FreeBSD$
- */
-
-#define LOCORE
-
-#include <machine/trap.h>
-
-/*
- * KBoot and simulators will start this program from the _start symbol, with
- * r3 pointing to a flattened device tree (kexec), r4 the physical address
- * at which we were loaded, and r5 0 (kexec) or a pointer to Open Firmware
- * (simulator). If r4 is non-zero, the first order of business is relocating
- * ourselves to 0. In the kboot case, the PPE secondary thread will enter
- * at 0x60.
- *
- * If started directly by the LV1 hypervisor, we are loaded to address 0
- * and execution on both threads begins at 0x100 (EXC_RST).
- */
-
-#define CACHELINE_SIZE 128
-#define SPR_CTRL 136
-
-/* KBoot thread 0 entry -- do relocation, then jump to main */
-.global _start
-_start:
- mfmsr %r31
- clrldi %r31,%r31,1
- mtmsrd %r31
- isync
- cmpwi %r4,0
- bne relocate_self
-relocated_start:
- lis %r1,0x100
- bl main
-
-. = 0x40
-.global secondary_spin_sem
-secondary_spin_sem:
- .long 0
-
-. = 0x60
-thread1_start_kboot:
- mfmsr %r31
- clrldi %r31,%r31,1
- mtmsrd %r31
- isync
-
- ba thread1_start /* kboot copies the first 256 bytes to
- * address 0, so we are safe to jump
- * (and stay) there */
-
-thread1_start:
- li %r3,secondary_spin_sem@l
-1: lwz %r1,0(%r3) /* Spin on SECONDARY_SPIN_SEM_ADDRESS */
- cmpwi %r1,0
- beq 1b /* If the semaphore is still zero, spin again */
-
- /* We have been woken up by thread 0 */
- li %r0,0x100 /* Invalidate reset vector cache line */
- icbi 0,%r0
- isync
- sync
- ba 0x100 /* Jump to the reset vector */
-
-. = EXC_RST
-exc_rst:
- mfmsr %r31
- clrldi %r31,%r31,1
- mtmsrd %r31
- isync
-
- mfspr %r3,SPR_CTRL
- /* The first two bits of r0 are 01 (thread 1) or 10 (thread 0) */
- cntlzw %r3,%r3 /* Now 0 for thread 0, 1 for thread 1 */
-
- cmpwi %r3,0
- bne thread1_start /* Send thread 1 to wait */
-
- b relocated_start /* Main entry point for thread 0 */
-
-#define EXCEPTION_HANDLER(exc) \
-. = exc; \
- li %r3, exc; \
- mfsrr0 %r4; \
- mfmsr %r5; \
- clrldi %r6,%r5,1; \
- mtmsrd %r6; \
- isync; \
- lis %r1,0x100; \
- bl ppc_exception
-
-EXCEPTION_HANDLER(EXC_MCHK)
-EXCEPTION_HANDLER(EXC_DSI)
-EXCEPTION_HANDLER(EXC_DSE)
-EXCEPTION_HANDLER(EXC_ISI)
-EXCEPTION_HANDLER(EXC_ISE)
-EXCEPTION_HANDLER(EXC_EXI)
-EXCEPTION_HANDLER(EXC_ALI)
-EXCEPTION_HANDLER(EXC_PGM)
-EXCEPTION_HANDLER(EXC_FPU)
-EXCEPTION_HANDLER(EXC_DECR)
-EXCEPTION_HANDLER(EXC_SC)
-
-relocate_self:
- /* We enter this with r4 the physical offset for our relocation */
- lis %r8,_end@ha /* r8: copy length */
- addi %r8,%r8,_end@l
- li %r5,0x100 /* r5: dest address */
-1: add %r6,%r4,%r5 /* r6: source address */
- ld %r7,0(%r6)
- std %r7,0(%r5)
- addi %r5,%r5,8
- cmpw %r5,%r8
- blt 1b
-
- /*
- * Now invalidate the cacheline with the second half of relocate_self,
- * and do an absolute branch there in case we overwrote part of
- * ourselves.
- */
-
- lis %r9,relocate_self_cache@ha
- addi %r9,%r9,relocate_self_cache@l
- dcbst 0,%r9
- sync
- icbi 0,%r9
- sync
- isync
- ba relocate_self_cache
-
-relocate_self_cache:
- /* Now invalidate the icache */
- li %r5,0x100
-2: dcbst 0,%r5
- sync
- icbi 0,%r5
- sync
- isync
- cmpw %r5,%r8
- addi %r5,%r5,CACHELINE_SIZE
- blt 2b
-
- /* All done: absolute jump to relocated entry point */
- ba relocated_start
-
diff --git a/sys/boot/powerpc/ps3/version b/sys/boot/powerpc/ps3/version
deleted file mode 100644
index fdac54e40aa5..000000000000
--- a/sys/boot/powerpc/ps3/version
+++ /dev/null
@@ -1,8 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-0.3: Added GPT support to disk.
-0.2: Added disk support.
-0.1: Initial PS3/PowerPC version.
diff --git a/sys/boot/powerpc/uboot/Makefile b/sys/boot/powerpc/uboot/Makefile
deleted file mode 100644
index d543aceeee4c..000000000000
--- a/sys/boot/powerpc/uboot/Makefile
+++ /dev/null
@@ -1,37 +0,0 @@
-# $FreeBSD$
-
-LOADER_UFS_SUPPORT?= yes
-LOADER_CD9660_SUPPORT?= no
-LOADER_EXT2FS_SUPPORT?= no
-LOADER_NET_SUPPORT?= yes
-LOADER_NFS_SUPPORT?= yes
-LOADER_TFTP_SUPPORT?= no
-LOADER_GZIP_SUPPORT?= no
-LOADER_BZIP2_SUPPORT?= no
-
-.include <bsd.init.mk>
-
-PROG= ubldr
-NEWVERSWHAT= "U-Boot loader" ${MACHINE_ARCH}
-INSTALLFLAGS= -b
-MAN=
-
-# Architecture-specific loader code
-SRCS= start.S conf.c vers.c
-SRCS+= ucmpdi2.c
-
-# Always add MI sources
-HELP_FILES= # Disable
-.include "${BOOTSRC}/loader.mk"
-.PATH: ${SYSDIR}/libkern
-
-CFLAGS+= -ffreestanding
-
-LDFLAGS= -nostdlib -static -T ${.CURDIR}/ldscript.powerpc
-
-.include "${BOOTSRC}/uboot.mk"
-
-DPADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
-LDADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBUBOOT_FDT} ${LIBSA}
-
-.include <bsd.prog.mk>
diff --git a/sys/boot/powerpc/uboot/conf.c b/sys/boot/powerpc/uboot/conf.c
deleted file mode 100644
index 561238d1ccf7..000000000000
--- a/sys/boot/powerpc/uboot/conf.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * Copyright (c) 1999 Michael Smith <msmith@freebsd.org>
- * 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.
- *
- * 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <stand.h>
-#include "bootstrap.h"
-#include "libuboot.h"
-
-#if defined(LOADER_NET_SUPPORT)
-#include "dev_net.h"
-#endif
-
-/* Make sure we have an explicit reference to exit so libsa's panic pulls in the MD exit */
-void (*exitfn)(int) = exit;
-
-/*
- * We could use linker sets for some or all of these, but
- * then we would have to control what ended up linked into
- * the bootstrap. So it's easier to conditionalise things
- * here.
- *
- * XXX rename these arrays to be consistent and less namespace-hostile
- */
-
-/* Exported for libstand */
-struct devsw *devsw[] = {
-#if defined(LOADER_DISK_SUPPORT) || defined(LOADER_CD9660_SUPPORT)
- &uboot_storage,
-#endif
-#if defined(LOADER_NET_SUPPORT)
- &netdev,
-#endif
- NULL
-};
-
-struct fs_ops *file_system[] = {
-#if defined(LOADER_UFS_SUPPORT)
- &ufs_fsops,
-#endif
-#if defined(LOADER_CD9660_SUPPORT)
- &cd9660_fsops,
-#endif
-#if defined(LOADER_EXT2FS_SUPPORT)
- &ext2fs_fsops,
-#endif
-#if defined(LOADER_NFS_SUPPORT)
- &nfs_fsops,
-#endif
-#if defined(LOADER_TFTP_SUPPORT)
- &tftp_fsops,
-#endif
-#if defined(LOADER_GZIP_SUPPORT)
- &gzipfs_fsops,
-#endif
-#if defined(LOADER_BZIP2_SUPPORT)
- &bzipfs_fsops,
-#endif
- NULL
-};
-
-struct netif_driver *netif_drivers[] = {
-#if defined(LOADER_NET_SUPPORT)
- &uboot_net,
-#endif
- NULL,
-};
-
-/* Exported for PowerPC only */
-/*
- * Sort formats so that those that can detect based on arguments
- * rather than reading the file go first.
- */
-
-struct file_format *file_formats[] = {
- &uboot_elf,
- NULL
-};
-
-/*
- * Consoles
- */
-extern struct console uboot_console;
-
-struct console *consoles[] = {
- &uboot_console,
- NULL
-};
diff --git a/sys/boot/powerpc/uboot/ldscript.powerpc b/sys/boot/powerpc/uboot/ldscript.powerpc
deleted file mode 100644
index 923838365793..000000000000
--- a/sys/boot/powerpc/uboot/ldscript.powerpc
+++ /dev/null
@@ -1,138 +0,0 @@
-/* $FreeBSD$ */
-
-OUTPUT_FORMAT("elf32-powerpc-freebsd", "elf32-powerpc-freebsd",
- "elf32-powerpc-freebsd")
-OUTPUT_ARCH(powerpc:common)
-ENTRY(_start)
-SEARCH_DIR(/usr/lib);
-PROVIDE (__stack = 0);
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = 0x00010000 + SIZEOF_HEADERS;
- .interp : { *(.interp) }
- .hash : { *(.hash) }
- .dynsym : { *(.dynsym) }
- .dynstr : { *(.dynstr) }
- .gnu.version : { *(.gnu.version) }
- .gnu.version_d : { *(.gnu.version_d) }
- .gnu.version_r : { *(.gnu.version_r) }
- .rela.text :
- { *(.rela.text) *(.rela.gnu.linkonce.t*) }
- .rela.data :
- { *(.rela.data) *(.rela.gnu.linkonce.d*) }
- .rela.rodata :
- { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
- .rela.got : { *(.rela.got) }
- .rela.got1 : { *(.rela.got1) }
- .rela.got2 : { *(.rela.got2) }
- .rela.ctors : { *(.rela.ctors) }
- .rela.dtors : { *(.rela.dtors) }
- .rela.init : { *(.rela.init) }
- .rela.fini : { *(.rela.fini) }
- .rela.bss : { *(.rela.bss) }
- .rela.plt : { *(.rela.plt) }
- .rela.sdata : { *(.rela.sdata) }
- .rela.sbss : { *(.rela.sbss) }
- .rela.sdata2 : { *(.rela.sdata2) }
- .rela.sbss2 : { *(.rela.sbss2) }
- .text :
- {
- *(.text)
- /* .gnu.warning sections are handled specially by elf32.em. */
- *(.gnu.warning)
- *(.gnu.linkonce.t*)
- } =0
- _etext = .;
- PROVIDE (etext = .);
- .init : { *(.init) } =0
- .fini : { *(.fini) } =0
- .rodata : { *(.rodata) *(.gnu.linkonce.r*) }
- .rodata1 : { *(.rodata1) }
- .sdata2 : { *(.sdata2) }
- .sbss2 : { *(.sbss2) }
- /* Adjust the address for the data segment to the next page up. */
- . = ((. + 0x1000) & ~(0x1000 - 1));
- .data :
- {
- *(.data)
- *(.gnu.linkonce.d*)
- CONSTRUCTORS
- }
- .data1 : { *(.data1) }
- .got1 : { *(.got1) }
- .dynamic : { *(.dynamic) }
- /* Put .ctors and .dtors next to the .got2 section, so that the pointers
- get relocated with -mrelocatable. Also put in the .fixup pointers.
- The current compiler no longer needs this, but keep it around for 2.7.2 */
- PROVIDE (_GOT2_START_ = .);
- .got2 : { *(.got2) }
- PROVIDE (__CTOR_LIST__ = .);
- .ctors : { *(.ctors) }
- PROVIDE (__CTOR_END__ = .);
- PROVIDE (__DTOR_LIST__ = .);
- .dtors : { *(.dtors) }
- PROVIDE (__DTOR_END__ = .);
- PROVIDE (_FIXUP_START_ = .);
- .fixup : { *(.fixup) }
- PROVIDE (_FIXUP_END_ = .);
- PROVIDE (_GOT2_END_ = .);
- PROVIDE (_GOT_START_ = .);
- .got : { *(.got) }
- .got.plt : { *(.got.plt) }
- PROVIDE (_GOT_END_ = .);
- /* We want the small data sections together, so single-instruction offsets
- can access them all, and initialized data all before uninitialized, so
- we can shorten the on-disk segment size. */
- .sdata : { *(.sdata) }
- _edata = .;
- PROVIDE (edata = .);
- .sbss :
- {
- PROVIDE (__sbss_start = .);
- *(.sbss)
- *(.scommon)
- *(.dynsbss)
- PROVIDE (__sbss_end = .);
- }
- .plt : { *(.plt) }
- .bss :
- {
- PROVIDE (__bss_start = .);
- *(.dynbss)
- *(.bss)
- *(COMMON)
- }
- _end = . ;
- PROVIDE (end = .);
- /* Stabs debugging sections. */
- .stab 0 : { *(.stab) }
- .stabstr 0 : { *(.stabstr) }
- /* DWARF debug sections.
- Symbols in the DWARF debugging sections are relative to the beginning
- of the section so we begin them at 0. */
- /* DWARF 1 */
- .debug 0 : { *(.debug) }
- .line 0 : { *(.line) }
- /* GNU DWARF 1 extensions */
- .debug_srcinfo 0 : { *(.debug_srcinfo) }
- .debug_sfnames 0 : { *(.debug_sfnames) }
- /* DWARF 1.1 and DWARF 2 */
- .debug_aranges 0 : { *(.debug_aranges) }
- .debug_pubnames 0 : { *(.debug_pubnames) }
- /* DWARF 2 */
- .debug_info 0 : { *(.debug_info) }
- .debug_abbrev 0 : { *(.debug_abbrev) }
- .debug_line 0 : { *(.debug_line) }
- .debug_frame 0 : { *(.debug_frame) }
- .debug_str 0 : { *(.debug_str) }
- .debug_loc 0 : { *(.debug_loc) }
- .debug_macinfo 0 : { *(.debug_macinfo) }
- /* SGI/MIPS DWARF 2 extensions */
- .debug_weaknames 0 : { *(.debug_weaknames) }
- .debug_funcnames 0 : { *(.debug_funcnames) }
- .debug_typenames 0 : { *(.debug_typenames) }
- .debug_varnames 0 : { *(.debug_varnames) }
- /* These must appear regardless of . */
-}
-
diff --git a/sys/boot/powerpc/uboot/start.S b/sys/boot/powerpc/uboot/start.S
deleted file mode 100644
index 3e80576907a4..000000000000
--- a/sys/boot/powerpc/uboot/start.S
+++ /dev/null
@@ -1,94 +0,0 @@
-/*-
- * Copyright (c) 2007 Semihalf, Rafal Jaworowski <raj@semihalf.com>
- * 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.
- *
- * 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.
- *
- * $FreeBSD$
- */
-
-#include <machine/asm.h>
-
-/*
- * Entry point to the loader that U-Boot passes control to.
- */
- .text
- .globl _start
-_start:
- /* Hint where to look for the API signature */
- lis %r11, uboot_address@ha
- addi %r11, %r11, uboot_address@l
- stw %r1, 0(%r11)
- /* Save U-Boot's r14 */
- lis %r11, saved_regs@ha
- addi %r11, %r11, saved_regs@l
- stw %r14, 0(%r11)
- /* Disable interrupts */
- mfmsr %r11
- andi. %r11, %r11, ~0x8000@l
- mtmsr %r11
- b main
-
-/*
- * syscall()
- */
-ENTRY(syscall)
- stwu %r1, -16(%r1)
- mflr %r0
- stw %r14, 8(%r1)
- stw %r0, 20(%r1)
- /* Restore U-Boot's r14 */
- lis %r11, saved_regs@ha
- addi %r11, %r11, saved_regs@l
- lwz %r14, 0(%r11)
- /* Enable interrupts */
- mfmsr %r11
- ori %r11, %r11, 0x8000@l
- mtmsr %r11
- /* Call into U-Boot */
- lis %r11, syscall_ptr@ha
- addi %r11, %r11, syscall_ptr@l
- lwz %r11, 0(%r11)
- mtctr %r11
- bctrl
- /* Disable interrupts */
- mfmsr %r11
- andi. %r11, %r11, ~0x8000@l
- mtmsr %r11
- /* Epilogue */
- lwz %r11, 0(%r1)
- lwz %r0, 4(%r11)
- mtlr %r0
- lwz %r14, 8(%r1)
- mr %r1, %r11
- blr
-
-/*
- * Data section
- */
- .data
-GLOBAL(syscall_ptr)
- .long 0
-GLOBAL(saved_regs)
- .long 0 /* R14 */
-GLOBAL(uboot_address)
- .long 0
diff --git a/sys/boot/powerpc/uboot/version b/sys/boot/powerpc/uboot/version
deleted file mode 100644
index 21556cff70e0..000000000000
--- a/sys/boot/powerpc/uboot/version
+++ /dev/null
@@ -1,11 +0,0 @@
-$FreeBSD$
-
-NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this
-file is important. Make sure the current version number is on line 6.
-
-1.1: Flattened Device Tree blob support.
-1.0: Added storage support.
-0.6: Integrated with the new U-Boot API
-0.5: Full network functionality.
-0.2: Initial U-Boot/PowerPC version derived from the existing
- OpenFirmware-based.