[OpenBIOS] [PATCH] ppc: add Apple copyright hack to Adler-32
Mark Cave-Ayland
mark.cave-ayland at ilande.co.uk
Thu Jun 11 00:25:19 CEST 2015
On 10/06/15 00:21, Cormac O'Brien wrote:
> This patch modifies the adler32 word to set an Apple copyright string in the
> device tree in order to allow Mac OS 9 to boot.
I think it's worth mentioning something here along the lines of "Since
OS 9 checks the copyright string on boot and the OS 9 bootloader is one
of the only users of adler32, use this word as a convenient injection
point for a fake copyright message which is enough to fool OS 9 into
booting". It's really just nit-picking on clarifying the message in the
source below.
> Signed-off-by: Cormac O'Brien <i.am.cormac.obrien at gmail.com>
>
> ---
> arch/ppc/qemu/init.c | 2 +-
> arch/ppc/qemu/qemu.fs | 28 ++++++++++++++++++++++++++++
> 2 files changed, 29 insertions(+), 1 deletion(-)
>
> diff --git a/arch/ppc/qemu/init.c b/arch/ppc/qemu/init.c
> index d31b8ba..a5073a3 100644
> --- a/arch/ppc/qemu/init.c
> +++ b/arch/ppc/qemu/init.c
> @@ -1003,7 +1003,7 @@ arch_of_init(void)
> /* Implementation of filll word (required by BootX) */
> bind_func("filll", ffilll);
>
> - bind_func("adler32", adler32);
> + bind_func("(adler32)", adler32);
>
> bind_func("platform-boot", boot);
> bind_func("(go)", go);
> diff --git a/arch/ppc/qemu/qemu.fs b/arch/ppc/qemu/qemu.fs
> index 458af1b..939985a 100644
> --- a/arch/ppc/qemu/qemu.fs
> +++ b/arch/ppc/qemu/qemu.fs
> @@ -93,3 +93,31 @@ variable keyboard-phandle 0 keyboard-phandle !
> :noname
> set-defaults
> ; PREPOST-initializer
> +
> +\ -------------------------------------------------------------------------
> +\ Adler-32 wrapper
> +\ -------------------------------------------------------------------------
> +
> +: adler32 ( adler buf len -- checksum )
> + \ Since Mac OS 9 is the only system using this word, we take this
> + \ opportunity to inject a copyright message that is necessary for the
> + \ system to boot.
> + " /" find-package if
> + " set-property" $find if
> + ( adler buf len phandle xt )
> + >r >r
> + " Copyright 1983-2001 Apple Computer, Inc. THIS MESSAGE FOR COMPATIBILITY ONLY"
> + encode-string " copyright"
> + r> r> execute
You should be able to get away with not using the R stack here - have a
look at using 2swap instead.
> + else
> + ." Can't find " type cr
Whilst it's nice to have error checking, I could probably live without
this particular else clause, since if the / node in the device tree is
missing then the adler32 word is likely to be the very least of our
problems...
> + then
> + then
> +
> + " (adler32)" $find if
> + execute
> + else
> + 3drop 0
> + ." Can't find" type cr
Maybe add (adler32) here so we know what can't be found?
> + then
> +;
Other than that, I think the patch looks good.
ATB,
Mark.
More information about the OpenBIOS
mailing list