Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 May 2018 23:11:25 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r334191 - in stable/11/stand: common ofw/libofw sparc64/loader
Message-ID:  <201805242311.w4ONBPp7074755@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Thu May 24 23:11:25 2018
New Revision: 334191
URL: https://svnweb.freebsd.org/changeset/base/334191

Log:
  MFC: r333955
  
  - Unbreak booting sparc64 kernels after the metadata unification in
    r329190 (MFCed to stable/11 in r332150); sparc64 kernels are always
    64-bit but with that revision in place, the loader was treating them
    as 32-bit ones.
  - In order to reduce the likelihood of this kind of breakage in the
    future, #ifdef out md_load() on sparc64 and make md_load_dual() -
    which is currently local to metadata.c anyway - static.
  - Make md_getboothowto() - also local to metadata.c - static.
  - Get rid of the unused DTB pointer on sparc64.
  
  Approved by:	re (kib)

Modified:
  stable/11/stand/common/metadata.c
  stable/11/stand/ofw/libofw/libofw.h
  stable/11/stand/sparc64/loader/main.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/stand/common/metadata.c
==============================================================================
--- stable/11/stand/common/metadata.c	Thu May 24 22:15:47 2018	(r334190)
+++ stable/11/stand/common/metadata.c	Thu May 24 23:11:25 2018	(r334191)
@@ -94,7 +94,7 @@ md_bootserial(void)
 }
 #endif
 
-int
+static int
 md_getboothowto(char *kargs)
 {
     char	*cp;
@@ -307,7 +307,7 @@ md_copymodules(vm_offset_t addr, int kern64)
  * - The kernel environment is copied into kernel space.
  * - Module metadata are formatted and placed in kernel space.
  */
-int
+static int
 md_load_dual(char *args, vm_offset_t *modulep, vm_offset_t *dtb, int kern64)
 {
     struct preloaded_file	*kfp;
@@ -460,13 +460,15 @@ md_load_dual(char *args, vm_offset_t *modulep, vm_offs
     return(0);
 }
 
+#if !defined(__sparc64__)
 int
 md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
 {
     return (md_load_dual(args, modulep, dtb, 0));
 }
+#endif
 
-#if defined(__mips__) || defined(__powerpc__)
+#if defined(__mips__) || defined(__powerpc__) || defined(__sparc64__)
 int
 md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb)
 {

Modified: stable/11/stand/ofw/libofw/libofw.h
==============================================================================
--- stable/11/stand/ofw/libofw/libofw.h	Thu May 24 22:15:47 2018	(r334190)
+++ stable/11/stand/ofw/libofw/libofw.h	Thu May 24 23:11:25 2018	(r334191)
@@ -62,7 +62,9 @@ struct preloaded_file;
 struct file_format;
 
 /* MD code implementing MI interfaces */
+#if !defined(__sparc64__)
 vm_offset_t md_load(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
+#endif
 vm_offset_t md_load64(char *args, vm_offset_t *modulep, vm_offset_t *dtb);
 
 extern void	reboot(void);

Modified: stable/11/stand/sparc64/loader/main.c
==============================================================================
--- stable/11/stand/sparc64/loader/main.c	Thu May 24 22:15:47 2018	(r334190)
+++ stable/11/stand/sparc64/loader/main.c	Thu May 24 23:11:25 2018	(r334191)
@@ -339,7 +339,7 @@ static int
 __elfN(exec)(struct preloaded_file *fp)
 {
 	struct file_metadata *fmp;
-	vm_offset_t mdp, dtbp;
+	vm_offset_t mdp;
 	Elf_Addr entry;
 	Elf_Ehdr *e;
 	int error;
@@ -348,7 +348,7 @@ __elfN(exec)(struct preloaded_file *fp)
 		return (EFTYPE);
 	e = (Elf_Ehdr *)&fmp->md_data;
 
-	if ((error = md_load(fp->f_args, &mdp, &dtbp)) != 0)
+	if ((error = md_load64(fp->f_args, &mdp, NULL)) != 0)
 		return (error);
 
 	printf("jumping to kernel entry at %#lx.\n", e->e_entry);



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