|Re: [hatari-devel] 68030 MMU work|
[ Thread Index |
| More lists.tuxfamily.org/hatari-devel Archives
I'm using the datasheet "68030 user's manual" (MC68030UM.pdf). You can get it here:
A description of early termination is on page 334 (pt. 220.127.116.11). The line i was writing about is in the flow chart on page 330 (bottom right).
The second variable is a 32 bit logical address, so it uses all 32 bits. The first value is part of a 32 bit logical address (the middle part) got by masking an address with a variable mask. I'm not sure, but i think that also counts as 32 bit value?
I've tried to fix the handling of early termination in the latest version of Previous.
Compared to the version you are using, there are also some other changes i made in the past few days. I have redesigned the table search function. It should now be much more accurate, especially for PTEST.
Unfortunately the changes from Hatari are not yet merged into Previous. So when you get the latest cpummu030.c/h you might have to re-do some of your changes. But i think it will fix the early termination problem. The way i'm combining parts of the logical address with the page address might still be incorrect, but at the moment i think it should work this way. I have to learn more about "signed addition" to confirm.
Please tell me, if your problem is gone with the new code.
Am 09.09.2012 um 20:33 schrieb Thomas Huth:
> Am Sun, 9 Sep 2012 19:05:26 +0200
> schrieb Andreas Grabher <andreas.grabher@xxxxxxxxxxxx>:
>> I'm close to fixing the early termination problem, but i have a
>> little problem understanding the datasheet. It says: PAGE FRAME
>> ADDRESS = UNUSED LOGICAL PAGE ADDRESS (IF ANY) + ADDRESS FIELD FROM
>> LAST DESCRIPTOR FETCHED (SIGNED ADDITION)
>> What is meant by "signed addition"? I have two 32-bit values with
>> type uae_u32 that need to be added that way. Has anyone an idea how
>> to do that in C?
> Sorry, not sure whether I've got that right. Did you mean that the
> values are already using 32-bit, or do the values use less than 32-bit
> and you just stored them in a 32-bit variable?
> Could you maybe also point me to the datasheet that you are using?