Subject: new loadbsd (Was: Re: [PATCH] Fixup for Amigas with memory at 0x200000)
To: None <port-amiga@netbsd.org>
From: Gunther Nikl <gni@gecko.de>
List: port-amiga
Date: 01/17/2003 12:15:07
--vtzGhvizbBRQ85DL
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Wed, Jan 15, 2003 at 03:07:47PM +0100, Gunther Nikl wrote:
>   [bootloader source]
>   And yet another observation: the marks[MARK_ENTRY] is not consistent.

  Ok, that issue is now solved.

  The good news: I managed to create a new loadbsd version supporting a.out
  and ELF kernels! I am attaching that version for those who would like to
  test it.
  Since Aymeric insisted to use the loadfile() interface I decided that this
  was a good suggestion :-) Getting everything to compile wasn't that easy
  and requires some careful preparations (missing headers, unusable values
  in loadfile_machdep.h for the _STANDALONE case). I tried to keep the
  necessary modfifications of NetBSD sources at a minimum. However,
  compiling loadbsd will never be easy :-/

  Lastly, some technical questions:

    - loadfile(): when symbols (LOAD_SYM) are requested, is it necessary to
      load the program header (LOAD_HDR) too?

    - loadbsd.c/get_mem_config(): I have a 128MB memory block, but that
      function creates three memory segments for it, when I start loadbsd
      from a fully booted system... If I start loadbsd from the initial
      console (without startup-sequnce, thus no was setpatch run),
      everything looks ok. This seems to indicate that CachePreDMA() is
      used incorrectly.

  Gunther

-- 
Linux is only free if your time has no value
 - Jamie Zawinsky

--vtzGhvizbBRQ85DL
Content-Type: application/x-gunzip
Content-Disposition: attachment; filename="loadbsd.dbg.gz"
Content-Transfer-Encoding: base64

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
n9oqUh2C3XGxHNf+X4fG8gccVAAA

--vtzGhvizbBRQ85DL--