Module Name: src Committed By: hgutch Date: Sat May 14 07:11:23 UTC 2022
Modified Files: src/sys/arch/sparc/stand/ofwboot: Locore.c src/sys/arch/sparc64/sparc64: ofw_machdep.c Log Message: PR 56829: Fix "map" call to Open Firmware and no longer mess up OFW stack. This unbreaks miniroot.fs. Thanks to Björn Johannesson for originally pointing this out and to mrg@ for pointing out the actual issue and suggesting a fix. To generate a diff of this commit: cvs rdiff -u -r1.16 -r1.17 src/sys/arch/sparc/stand/ofwboot/Locore.c cvs rdiff -u -r1.50 -r1.51 src/sys/arch/sparc64/sparc64/ofw_machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sparc/stand/ofwboot/Locore.c diff -u src/sys/arch/sparc/stand/ofwboot/Locore.c:1.16 src/sys/arch/sparc/stand/ofwboot/Locore.c:1.17 --- src/sys/arch/sparc/stand/ofwboot/Locore.c:1.16 Fri Sep 15 13:25:34 2017 +++ src/sys/arch/sparc/stand/ofwboot/Locore.c Sat May 14 07:11:23 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: Locore.c,v 1.16 2017/09/15 13:25:34 martin Exp $ */ +/* $NetBSD: Locore.c,v 1.17 2022/05/14 07:11:23 hgutch Exp $ */ /* * Copyright (C) 1995, 1996 Wolfgang Solfrank. @@ -664,8 +664,6 @@ OF_map_phys(paddr_t paddr, off_t size, v cell_t vaddr; cell_t paddr_hi; cell_t paddr_lo; - cell_t status; - cell_t retaddr; } args; #ifdef __notyet @@ -676,7 +674,7 @@ OF_map_phys(paddr_t paddr, off_t size, v #endif args.name = ADR2CELL("call-method"); args.nargs = 7; - args.nreturns = 1; + args.nreturns = 0; args.method = ADR2CELL("map"); args.ihandle = HDL2CELL(mmuh); args.mode = mode; @@ -687,9 +685,7 @@ OF_map_phys(paddr_t paddr, off_t size, v if (openfirmware(&args) == -1) return -1; - if (args.status) - return -1; - return (vaddr_t)args.retaddr; + return 0; } Index: src/sys/arch/sparc64/sparc64/ofw_machdep.c diff -u src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.50 src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.51 --- src/sys/arch/sparc64/sparc64/ofw_machdep.c:1.50 Thu Mar 17 08:08:03 2022 +++ src/sys/arch/sparc64/sparc64/ofw_machdep.c Sat May 14 07:11:23 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ofw_machdep.c,v 1.50 2022/03/17 08:08:03 andvar Exp $ */ +/* $NetBSD: ofw_machdep.c,v 1.51 2022/05/14 07:11:23 hgutch Exp $ */ /* * Copyright (C) 1996 Wolfgang Solfrank. @@ -34,7 +34,7 @@ #include "opt_multiprocessor.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.50 2022/03/17 08:08:03 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ofw_machdep.c,v 1.51 2022/05/14 07:11:23 hgutch Exp $"); #include <sys/param.h> #include <sys/buf.h> @@ -339,8 +339,6 @@ prom_map_phys(paddr_t paddr, off_t size, cell_t vaddr; cell_t phys_hi; cell_t phys_lo; - cell_t status; - cell_t retaddr; } args; if (mmuh == -1 && ((mmuh = get_mmu_handle()) == -1)) { @@ -349,7 +347,7 @@ prom_map_phys(paddr_t paddr, off_t size, } args.name = ADR2CELL(&"call-method"); args.nargs = 7; - args.nreturns = 1; + args.nreturns = 0; args.method = ADR2CELL(&"map"); args.ihandle = HDL2CELL(mmuh); args.mode = mode; @@ -360,9 +358,7 @@ prom_map_phys(paddr_t paddr, off_t size, if (openfirmware(&args) == -1) return -1; - if (args.status) - return -1; - return (int)args.retaddr; + return 0; }