Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 6 Apr 2010 19:20:31 +0000 (UTC)
From:      Nathan Whitehorn <nwhitehorn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r206284 - projects/ppc64/sys/boot/powerpc/ps3
Message-ID:  <201004061920.o36JKVsl056039@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: nwhitehorn
Date: Tue Apr  6 19:20:31 2010
New Revision: 206284
URL: http://svn.freebsd.org/changeset/base/206284

Log:
  Add a PPC64 ELF loader stub to unbreak the build. The changes requiring
  this accidentally got pulled in during my MFC.
  
  Submitted by:	Andreas Tobler

Added:
  projects/ppc64/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c

Added: projects/ppc64/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/ppc64/sys/boot/powerpc/ps3/ppc64_elf_freebsd.c	Tue Apr  6 19:20:31 2010	(r206284)
@@ -0,0 +1,100 @@
+/*-
+ * 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: projects/ppc64/sys/boot/ofw/libofw/ppc64_elf_freebsd.c 197113 2009-09-12 05:39:51Z nwhitehorn $");
+
+#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;
+	intptr_t		entry;
+
+	if ((fmp = file_findmetadata(fp, MODINFOMD_ELFHDR)) == NULL) {
+		return(EFTYPE);
+	}
+	e = (Elf_Ehdr *)&fmp->md_data;
+	
+	/* Handle function descriptor */
+	entry = *(uint64_t *)e->e_entry;
+
+	if ((error = md_load64(fp->f_args, &mdp)) != 0)
+		return (error);
+
+	printf("Kernel entry at 0x%lx ...\n", entry);
+
+	dev_cleanup();
+
+#if 0
+	OF_chain((void *)reloc, end - (char *)reloc, (void *)entry,
+	    (void *)mdp, sizeof(mdp));
+#endif
+
+	panic("exec returned");
+}
+
+struct file_format	ppc_elf64 =
+{
+	ppc64_elf_loadfile,
+	ppc64_elf_exec
+};



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004061920.o36JKVsl056039>