Re: ofwboot, why does it work?
Artyom Tarasenko <[email protected]> Thu, 18 Sep 2014 22:16:01 +0200
| Newsgroups | gmane.os.netbsd.ports.ofppc |
|---|---|
| Message-ID | <CACXAS8B61z_oy7Xi8r5NzyVU1iuXEx0ui5hDarS=0Kd5DvZFJQ@mail.gmail.com> |
On Thu, Sep 18, 2014 at 7:40 PM, Frank Wille <[email protected]> wrote: > Artyom Tarasenko wrote: > I don't understand. Why should "copy-out" be used on 'buf'? AFAICS ofdev.c > passes 'buf' to OF_read() to read a block from disk. In my case it was crashing even before starting to read, on getting the properties. The 'buf' is used in in devopen for getting the properties and in OFW ok dev /client-services ok see getprop : getprop find-node-property if >r r@ get r> decode copy-out else options? if get-env-var if 2drop h# ffffffff else 3 pick >r copy-out 1+ r> min then else 2drop 2drop h# ffffffff then then (pop-package) ; so, although just a few bytes is needed, the 'copy-out' word used by 'getprop' cleans the whole 'buf' before writing into it. >> see copy-out > > "no such symbol in tables" > > This word doesn't exist in SmartFirmware. Whops. I wasn't aware that Pegasos II is using SmartFirmware. Were there also an alternative from FirmWorks, or is SmartFirmware the only firmware for Pegasos II. At least this explains why you was not affected by the problem. Now it's only unclear why B50 was not affected as well. Do you by any chance have more OF machines? >> Well it could be that my firmware is eating the stack. At first I put >> some printfs, and the more printfs I put, the earlier ofwboot died. > > That's not because it is eating the stack, but because the .text section > gets larger and 'stack' is moving to a higher address, so other parts of > the main program are destroyed when accessing 'buf'. Right. This makes sense. Thanks for the explanation. -- Regards, Artyom Tarasenko SPARC and PPC PReP under qemu blog: http://tyom.blogspot.com/search/label/qemu