Author: nwhitehorn
Date: Fri Nov 24 23:41:04 2017
New Revision: 326182
URL: https://svnweb.freebsd.org/changeset/base/326182

Log:
  Modify all FreeBSD bootloaders on PowerPC AIM (Book-S) systems to pass a
  magic number to the kernel in r7 rather than the (currently unused and
  irrelevant) width of the metadata pointer, which I believe was intended
  for a never-used approach to the 64-bit port. This enables the kernel,
  in a future commit, to switch on the cookie to distinguish a real
  metadata pointer from loader(8) from garbage left in r6 by some other
  boot loader.
  
  MFC after:    3 weeks

Modified:
  head/stand/ofw/libofw/elf_freebsd.c
  head/stand/ofw/libofw/ppc64_elf_freebsd.c
  head/stand/powerpc/kboot/ppc64_elf_freebsd.c
  head/stand/powerpc/ps3/ppc64_elf_freebsd.c

Modified: head/stand/ofw/libofw/elf_freebsd.c
==============================================================================
--- head/stand/ofw/libofw/elf_freebsd.c Fri Nov 24 19:57:13 2017        
(r326181)
+++ head/stand/ofw/libofw/elf_freebsd.c Fri Nov 24 23:41:04 2017        
(r326182)
@@ -91,7 +91,7 @@ __elfN(ofw_exec)(struct preloaded_file *fp)
                    mdp, sizeof(mdp));
        } else {
                OF_chain((void *)reloc, end - (char *)reloc, (void *)entry,
-                   (void *)mdp, sizeof(mdp));
+                   (void *)mdp, 0xfb5d104d);
        }
 
        panic("exec returned");

Modified: head/stand/ofw/libofw/ppc64_elf_freebsd.c
==============================================================================
--- head/stand/ofw/libofw/ppc64_elf_freebsd.c   Fri Nov 24 19:57:13 2017        
(r326181)
+++ head/stand/ofw/libofw/ppc64_elf_freebsd.c   Fri Nov 24 23:41:04 2017        
(r326182)
@@ -93,11 +93,11 @@ ppc64_ofw_elf_exec(struct preloaded_file *fp)
 
        if (dtbp != 0) {
                OF_quiesce();
-               ((int (*)(u_long, u_long, u_long, void *, u_long))entry)(dtbp, 
0, 0,
-                   mdp, sizeof(mdp));
+               ((int (*)(u_long, u_long, u_long, void *, u_long))entry)(dtbp,
+                   0, 0, mdp, 0xfb5d104d);
        } else {
                OF_chain((void *)reloc, end - (char *)reloc, (void *)entry,
-                   (void *)mdp, sizeof(mdp));
+                   (void *)mdp, 0xfb5d104d);
        }
 
        panic("exec returned");

Modified: head/stand/powerpc/kboot/ppc64_elf_freebsd.c
==============================================================================
--- head/stand/powerpc/kboot/ppc64_elf_freebsd.c        Fri Nov 24 19:57:13 
2017        (r326181)
+++ head/stand/powerpc/kboot/ppc64_elf_freebsd.c        Fri Nov 24 23:41:04 
2017        (r326182)
@@ -96,7 +96,7 @@ ppc64_elf_exec(struct preloaded_file *fp)
 
        trampoline[3] = dtb;
        trampoline[6] = mdp;
-       trampoline[7] = sizeof(mdp);
+       trampoline[7] = 0xfb5d104d;
        printf("Kernel entry at %#jx (%#x) ...\n", e->e_entry, trampoline[2]);
        printf("DTB at %#x, mdp at %#x\n", dtb, mdp);
 

Modified: head/stand/powerpc/ps3/ppc64_elf_freebsd.c
==============================================================================
--- head/stand/powerpc/ps3/ppc64_elf_freebsd.c  Fri Nov 24 19:57:13 2017        
(r326181)
+++ head/stand/powerpc/ps3/ppc64_elf_freebsd.c  Fri Nov 24 23:41:04 2017        
(r326182)
@@ -89,7 +89,7 @@ ppc64_elf_exec(struct preloaded_file *fp)
        dev_cleanup();
 
        entry(0 /* FDT */, 0 /* Phys. mem offset */, 0 /* OF entry */,
-            (void *)mdp, sizeof(mdp));
+            (void *)mdp, 0xfb5d104d);
 
        panic("exec returned");
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to