[prev in list] [next in list] [prev in thread] [next in thread]
List: openbios
Subject: Re: [OpenBIOS] [PATCH 00/24] Implement load/init-program as per IEEE-1275 specification
From: Programmingkid <programmingkidx () gmail ! com>
Date: 2016-09-09 1:53:42
Message-ID: 785B314B-EA64-4AE6-BFFD-3906FB75E279 () gmail ! com
[Download RAW message or body]
On Sep 8, 2016, at 3:27 AM, Mark Cave-Ayland wrote:
> On 06/09/16 08:13, Mark Cave-Ayland wrote:
>
> > On 06/09/16 01:40, Programmingkid wrote:
> >
> > > On Sep 5, 2016, at 6:01 PM, Mark Cave-Ayland wrote:
> > >
> > > > The current implementation of load/init-program has some fairly big hacks in \
> > > > order to work around the fact that we don't have per-architecture CPU \
> > > > contexts. An example of this is chained bootloaders used for SPARC64 which \
> > > > use Forth to alter the saved CPU context so that control is returned to a \
> > > > different address by directly executing init-program before return.
> > > >
> > > > With all architectures now able to save/restore CPU contexts, these hacks can \
> > > > now be removed and init-program changed to be a single per-architecture \
> > > > implementation along with some associated tidy-ups.
> > > >
> > > > I've given this a fairly thorough testing across all my OpenBIOS test images \
> > > > and as far as I can tell doesn't cause any regressions.
> > > >
> > > > Requires the previously posted SPARC32 and SPARC64 context patches to be \
> > > > applied first.
> > > >
> > > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> > > >
> > > > Mark Cave-Ayland (24):
> > > > libopenbios: rename saved-program-state to load-state
> > > > libopenbios: introduce arch_init_program() in preparation for
> > > > per-arch implementations
> > > > all: create client program context once at startup
> > > > client.fs: add load-state param variable
> > > > amd64: introduce arch_init_program() implementation
> > > > ppc: introduce arch_init_program() implementation
> > > > SPARC32: introduce arch_init_program() implementation
> > > > SPARC64: introduce arch_init_program() implementation
> > > > x86: introduce arch_init_program() implementation
> > > > libopenbios: add context wrappers for Fcode/Forth payloads
> > > > SPARC32: move Forth/FCode over to use new context wrappers
> > > > SPARC64: move Forth/FCode over to use new context wrappers
> > > > x86: move Forth/FCode over to use new context wrappers
> > > > elf: set boot notes in elf_load() if supplied
> > > > SPARC64: remove start_client_image()
> > > > libopenbios: move prototypes for start_elf() and __context into
> > > > libopenbios
> > > > libopenbios: move go() function into libopenbios
> > > > aout: implement load/init-program as per IEEE-1275 specification
> > > > bootcode: implement load/init-program as per IEEE-1275 specification
> > > > elf: implement load/init-program as per IEEE-1275 specification
> > > > fcode: implement load/init-program as per IEEE-1275 specification
> > > > forth: implement load/init-program as per IEEE-1275 specification
> > > > libopenbios: remove conditional logic from go()
> > > > libopenbios: remove address parameter from start_elf()
> > > >
> > > > arch/amd64/context.c | 51 ++++++++++++++++++++-----
> > > > arch/ppc/qemu/context.c | 67 ++++++++++++++++++++++-----------
> > > > arch/ppc/qemu/init.c | 14 ++-----
> > > > arch/sparc32/boot.c | 71 \
> > > > ++++------------------------------- arch/sparc32/boot.h | \
> > > > 6 +-- arch/sparc32/context.c | 39 +++++++++++++++----
> > > > arch/sparc32/openbios.c | 2 +-
> > > > arch/sparc64/boot.c | 54 +-------------------------
> > > > arch/sparc64/boot.h | 6 ---
> > > > arch/sparc64/context.c | 68 ++++++++++++++++++++-------------
> > > > arch/sparc64/openbios.c | 1 -
> > > > arch/unix/boot.c | 13 +++++++
> > > > arch/x86/boot.c | 53 +-------------------------
> > > > arch/x86/boot.h | 6 +--
> > > > arch/x86/context.c | 52 ++++++++++++++++++++-----
> > > > arch/x86/openbios.c | 1 -
> > > > forth/debugging/client.fs | 30 ++++++++-------
> > > > include/libopenbios/bootcode_load.h | 2 +
> > > > include/libopenbios/initprogram.h | 9 +++++
> > > > libopenbios/aout_load.c | 48 +++++++++++------------
> > > > libopenbios/bootcode_load.c | 33 +++++++++++++---
> > > > libopenbios/elf_load.c | 28 +++++++-------
> > > > libopenbios/fcode_load.c | 32 ++++++----------
> > > > libopenbios/forth_load.c | 30 +++++++--------
> > > > libopenbios/init.c | 3 ++
> > > > libopenbios/initprogram.c | 45 ++++++++++++++++++++++
> > > > libopenbios/load.c | 47 ++++++++---------------
> > > > libopenbios/xcoff_load.c | 8 ++--
> > > > 28 files changed, 417 insertions(+), 402 deletions(-)
> > > >
> > > > --
> > > > 1.7.10.4
> > > >
> > > >
> > > > --
> > > > OpenBIOS http://openbios.org/
> > > > Mailinglist: http://lists.openbios.org/mailman/listinfo
> > > > Free your System - May the Forth be with you
> > >
> > > That is an impressive amount of work done. Would you have a repo that someone \
> > > could clone in order to test out your patches?
> >
> > I've pushed it here: https://github.com/mcayland/openbios/tree/context
> >
> > Note that PPC mostly just worked as the bootloaders are considerably
> > less complex than the SPARC variants which rely rather heavily on the
> > PROM for boot.
>
> And I've just re-pushed the updated v2 to github too.
Just tested Mac OS 10.4.0 and Mac OS 9.2.1. Both booted without problem. The only \
change I noticed is I can't open a usb flash drive in Mac OS 9.2 without a freeze \
taking place. I doubt it is due to your patches.
--
OpenBIOS http://openbios.org/
Mailinglist: http://lists.openbios.org/mailman/listinfo
Free your System - May the Forth be with you
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic