git: ed726c3e34d8 - stable/13 - powerpc64: fix loader regression
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 04 Mar 2022 19:18:06 UTC
The branch stable/13 has been updated by alfredo: URL: https://cgit.FreeBSD.org/src/commit/?id=ed726c3e34d8e6b26b2b64367a0ab6d850cb4912 commit ed726c3e34d8e6b26b2b64367a0ab6d850cb4912 Author: Leandro Lupori <luporl@FreeBSD.org> AuthorDate: 2021-09-21 20:22:42 +0000 Commit: Alfredo Dal'Ava Junior <alfredo@FreeBSD.org> CommitDate: 2022-03-04 22:18:22 +0000 powerpc64: fix loader regression After b4cb3fe0e39a, loader started crashing on PowerPC64, with a Program Exception (700) error. The problem was that archsw was used before being initialized, with the new mount feature. This change fixes the issue by initializing archsw earlier, before setting currdev, that triggers the mount. Reviewed by: tsoome MFC after: 1 month X-MFC-With: b4cb3fe0e39a Sponsored by: Instituto de Pesquisas Eldorado (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D32027 (cherry picked from commit 680ca739458ba8cba221ea74794c2cd9771c77f8) --- stand/powerpc/ofw/main.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/stand/powerpc/ofw/main.c b/stand/powerpc/ofw/main.c index d30be975ac41..81195d3f2444 100644 --- a/stand/powerpc/ofw/main.c +++ b/stand/powerpc/ofw/main.c @@ -168,6 +168,17 @@ main(int (*openfirm)(void *)) */ cons_probe(); + archsw.arch_getdev = ofw_getdev; + archsw.arch_copyin = ofw_copyin; + archsw.arch_copyout = ofw_copyout; + archsw.arch_readin = ofw_readin; +#ifdef CAS + setenv("cas", "1", 0); + archsw.arch_autoload = ppc64_autoload; +#else + archsw.arch_autoload = ofw_autoload; +#endif + /* Set up currdev variable to have hooks in place. */ env_setenv("currdev", EV_VOLATILE, "", ofw_setcurrdev, env_nounset); @@ -214,17 +225,6 @@ main(int (*openfirm)(void *)) if (!(mfmsr() & PSL_DR)) setenv("usefdt", "1", 1); - archsw.arch_getdev = ofw_getdev; - archsw.arch_copyin = ofw_copyin; - archsw.arch_copyout = ofw_copyout; - archsw.arch_readin = ofw_readin; -#ifdef CAS - setenv("cas", "1", 0); - archsw.arch_autoload = ppc64_autoload; -#else - archsw.arch_autoload = ofw_autoload; -#endif - interact(); /* doesn't return */ OF_exit();