[OpenBIOS] [PATCH] ppc: add Apple copyright hack to Adler-32

Alexander Graf agraf at suse.de
Wed Jun 10 11:03:45 CEST 2015



> Am 10.06.2015 um 01:21 schrieb Cormac O'Brien <i.am.cormac.obrien at gmail.com>:
> 
> 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.
> 
> 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"

Segher suggested that the code doesn't verify the year part, so you could make this "Copyright not-by Apple Computer, Inc."

Alex

> +      encode-string " copyright"
> +      r> r> execute
> +    else
> +      ." Can't find " type cr
> +    then
> +  then
> +
> +  " (adler32)" $find if
> +    execute
> +  else
> +    3drop 0
> +    ." Can't find" type cr
> +  then
> +;
> -- 
> 2.4.2
> 



More information about the OpenBIOS mailing list