[OpenBIOS] PATCH: Rework CIF interface to handle parameters in reverse order

Nick Couchman Nick.Couchman at seakr.com
Tue Nov 24 21:25:03 CET 2009


>>> On 2009/11/23 at 15:36, Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
wrote: 
> Hi all,
> 
> This patch is an attempt at reworking the CIF so that it can be called 
> correctly from both Fcode (Forth) and C. Currently the C arguments are 
> pushed into the stack in reverse order, rather than forward order which 
> is required by Forth words calling the CIF.
> 
> In order to fix this, we correct the order in which C arguments are 
> placed on the Forth stack by pushing the parameters in forward order. 
> However, this has the side effect of reversing the order in which the 
> parameters to the CIF Forth words are expected and so these must also be 
> altered to take this into account.
> 
> This patch works as expected from Forth Fcode, but I would like to put 
> it out for testing before I commit to the repository. Blue Swirl/Laurent 
> - please can you test on your setups again?
> 

And, in case it's helpful, here's the output from qemu with the "-d int" flag for the the "Unhandled Exception 0x9000280200000000 PC = 0x00000000ffd0f05c NPC = 0x00000000ffd0f060" error:


Search PC...
  4687: Data Access MMU Miss (v=0068) pc=00000000ffd0f05c npc=00000000ffd0f060 SP=00000000fff10cd1
pc: 00000000ffd0f05c  npc: 00000000ffd0f060
General Registers:
%g0: 0000000000000000   %g1: 9000280200000000   %g2: 00000000ffdac010   %g3: 0000000000000000   
%g4: fffffffffffffff8   %g5: 0000000000000030   %g6: 0000000000000000   %g7: 0000000000000000   
Current Register Window:
%o0: 0000000000000034   %o1: 00000000ffee4d58   %o2: 00000000ffee3000   %o3: 00000000000000e8   
%o4: 00000000ffe33878   %o5: 00000000ffe32d68   %o6: 00000000fff10cd1   %o7: 00000000ffd0f068   
%l0: 00000000ffee3000   %l1: 0000000000000000   %l2: 00000000ffee3000   %l3: 0000000000000000   
%l4: 000000000000001a   %l5: 0000000000000000   %l6: 0000000000000000   %l7: 0000000000000000   
%i0: 00000000ffe1b720   %i1: 0000000000000200   %i2: 00000000ffe00000   %i3: 0000000000000000   
%i4: ffffffffffffffff   %i5: 0000000000000018   %i6: 00000000fff10d91   %i7: 00000000ffd12708   

Floating Point Registers:
%f00: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f04: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f08: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f12: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f16: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f20: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f24: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
%f28: 000000000.000000 000000000.000000 000000000.000000 000000000.000000
pstate: 0x00000016 ccr: 0x44 asi: 0x00 tl: 0 fprs: 0
cansave: 6 canrestore: 0 otherwin: 0 wstate 0 cleanwin 7 cwp 4
fsr: 0x00000000

-Nick



--------
This e-mail may contain confidential and privileged material for the sole use of the intended recipient.  If this email is not intended for you, or you are not responsible for the delivery of this message to the intended recipient, please note that this message may contain SEAKR Engineering (SEAKR) Privileged/Proprietary Information.  In such a case, you are strictly prohibited from downloading, photocopying, distributing or otherwise using this message, its contents or attachments in any way.  If you have received this message in error, please notify us immediately by replying to this e-mail and delete the message from your mailbox.  Information contained in this message that does not relate to the business of SEAKR is neither endorsed by nor attributable to SEAKR.



More information about the OpenBIOS mailing list