Date: Mon, 19 Feb 2018 20:23:47 -0600 From: Devin Teske <dteske@freebsd.org> To: Warner Losh <imp@bsdimp.com> Cc: Kyle Evans <kevans@freebsd.org>, =?utf-8?Q?Juan_Ram=C3=B3n_Molina_Menor?= <listjm@club.fr>, FreeBSD Current <freebsd-current@freebsd.org>, dteske@FreeBSD.org Subject: Re: ACPI panic on boot with new Lua loader and other minor issues Message-ID: <DA23AB45-A40F-4514-92BD-6799244A9E4B@freebsd.org> In-Reply-To: <CANCZdfqLxkFb3k5nZW34m-GS48WNwio1ueJLU0vgX0-N7Br36g@mail.gmail.com> References: <2AFF3AE4-8740-4776-9D8D-7D709EE051C6@gmail.com> <1b9e58fe-2616-b04b-13c2-fee78a33ad6e@club.fr> <CACNAnaFNv5LwDv3Z2dgPe%2Bb%2B3La%2B%2B-4CPNECug5XCdaTT_uo3A@mail.gmail.com> <6EB9705C-92AC-4952-B1F6-642DCD4701F1@freebsd.org> <CANCZdfqLxkFb3k5nZW34m-GS48WNwio1ueJLU0vgX0-N7Br36g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
> On Feb 19, 2018, at 4:32 PM, Warner Losh <imp@bsdimp.com> wrote: >=20 >=20 >=20 >> On Mon, Feb 19, 2018 at 2:57 PM, Devin Teske <dteske@freebsd.org> wrote: >>=20 >>=20 >> > On Feb 19, 2018, at 2:21 PM, Kyle Evans <kevans@freebsd.org> wrote: >> > >> > It seems that the Forth loader might be doing something sneaky and >> > replacing the standard common "boot" with a Forth boot that handles >> > this a lot better. CC'ing dteske@ so they can confirm. >>=20 >> I can indeed confirm this as fact. >>=20 >> Not able to help much because I am driving cross-country (San Francisco t= o Orlando) right now with the spouse and dog. >>=20 >> We get back March 3rd, but I will be checking-in from time to time for sp= oradic responses during downtime. >=20 > The command in loader.4th is defined as: >=20 > : boot > 0=3D if ( interpreted ) get_arguments then >=20 > \ Unload only if a path was passed > dup if > >r over r> swap > c@ [char] - <> if > 0 1 unload drop > else > s" kernelname" getenv? if ( a kernel has been loaded ) > try-menu-unset > bootmsg 1 boot exit > then > load_kernel_and_modules > ?dup if exit then > try-menu-unset > bootmsg 0 1 boot exit > then > else > s" kernelname" getenv? if ( a kernel has been loaded ) > try-menu-unset > bootmsg 1 boot exit > then > load_kernel_and_modules > ?dup if exit then > try-menu-unset > bootmsg 0 1 boot exit > then > load_kernel_and_modules > ?dup 0=3D if bootmsg 0 1 boot then > ;=20 >=20 > The thing to know here is when you see 'boot' as part of above script, it'= s calling the 'boot' cli command, not itself recursively. >=20 What is actually going on is that when the =E2=80=9Cboot=E2=80=9D function i= s compiled, the reference to =E2=80=9Cboot=E2=80=9D inside it is to the alre= ady-existing word defined previously. Forth allows you to have multiply-defi= ned names. The =E2=80=9Cboot=E2=80=9D command inside the =E2=80=9Cboot=E2=80= =9D function is replaced with the address of previous boot during function c= ompilation because the function is m not defined and given an address in the= dictionary until it is completed (last line compiled). =E2=80=94=20 Devin=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?DA23AB45-A40F-4514-92BD-6799244A9E4B>