[LispM] Outstanding Meroko bugs and a question of my own
nyef at lisphacker.com
nyef at lisphacker.com
Sun Oct 9 08:31:55 PDT 2005
Daniel, everyone else,
For DISPATCH on Oldspace, just pick up the oldspace bit from the level-1 map
indexed by MD. Should be easy enough to get working once you have a failing
test.
For Stack-Self on DISPATCH, when the N bit is set in the Jump-Op (that is,
Jump-Op is 3), subtract 1 from the stored uPC.
Dispatch-Source-MF-Bus is almost a misnomer. It's something like
dispatch_source = (MFBus >> 24) & 0x3e;.
Dispatch-Source-MIR (sources 2 and 3) are more complex. The main bit of
logic runs something like this:
int is_miscop = ((MIB >> 9) & 0xf) == 0xd;
int is_group1 = MIB & 0x2000;
if (is_miscop && (MCR & MCR_Misc_Op_Group_0)
&& (is_group1? (MCR & MCR_Misc_Op_Group_1): 1)) {
dispatch_source = 0x800 | (MIB & 0x1ff) | (is_group1? 0x200: 0);
} else {
dispatch_source = 0xc00 | ((MIB >> 6) & 0x3ff);
}
if (MInst_Dispatch_Source == 3) {
/* May apply to source 1 as well */
MInst_Disp_Address &= 0xc7f;
}
And now my own cry for help: I was two days into my latest attempt to figure
out why my emulator isn't passing the instruction-stream tests from EXPT
when I found out about Meroko being released. The specific case I'm having
trouble with is when bit 14 is set in the return address for a POPJ and the
MCR has the chain-enable bit set. Can anyone tell me what's supposed to
happen here?
--Alastair Bridgewater
More information about the LispM
mailing list