Re: [hatari-devel] 68040/060 MMU bug fix |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- To: Hatari devel list <hatari-devel@xxxxxxxxxxxxxxxxxxx>
- Subject: Re: [hatari-devel] 68040/060 MMU bug fix
- From: Andreas Grabher <andreas_g86@xxxxxxxxxx>
- Date: Mon, 1 Jan 2024 18:51:40 +0100
- Cc: Nicolas Pomarède <npomarede@xxxxxxxxxxxx>, Toni Wilen <twilen@xxxxxxxxxx>
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=icloud.com; s=1a1hai; t=1704131514; bh=yTFuvRnD93qO9jOJFoQfewJjO1Q5zZcLTqj+97h3j/0=; h=Content-Type:Mime-Version:Subject:From:Date:Message-Id:To; b=0fDTw+Cm3OvvvIa3hpgO1STVcUSeUm3+zibC/vfOQ0ZRzXnYAZddr+3bxqLSsi3ho PpPfHpoWdPu+qtHzm16E7Gy/Os1EB+oVzdX0CFsseUlKbUQp0ISGO4Er8A5WGNBps6 7KpRBimGJx3CyZyzyea1smkh9qZVLJlaIPaEmif4tDywFmhMTj5bsTnfR9nKBfxdiV +rCn0hqR1vNUS24bQ0yiRQ6MPzZHMsucwN/M4GI1bWo1x4EgW/9s2gofxKcujot2l5 RNJO794F989lsNd6a4EaWVWrB3Rs2A9kHBpI5KdLmP5YLBSHODh8Vvybn0ZFi4byDG QqZNgWi2yLQ7A==
> Am 31.12.2023 um 10:59 schrieb Andreas Grabher <andreas_g86@xxxxxxxxxx>:
>
>
>> Am 30.12.2023 um 10:31 schrieb Andreas Grabher <andreas_g86@xxxxxxxxxx>:
>>
>> May I suggest the appended patch for WinUAE/Hatari? I just rechecked: Without this level 7 interrupts do not work correctly. Triggering an NMI on the NeXT causes multiple nested level 7 interrupt exceptions finally resulting in double bus fault. With the patch all seems to be fine. Maybe lastipl could be set in a different place of the cascading function calls (do_interrupt() > doint() > update_ipl()). Btw. intlev() is called twice or even more often in this cascade (even without any cycle exact mode).
>>
>> <winuae.diff>
>>
>
> Minor improvement: Checking intr > 0 is useless, as regs.intmask can never be negative (and negative return values for intlev() would be strange anyway).
>
> <winuae.diff>
I tried to simplify my patch even further without needing regs.lastipl. But when I tried to just compare intr to regs.ipl_pin it turned out that regs.ipl_pin is not always updated if the interrupt level is lowered (update_ipl() not called). So regs.ipl_pin does not reliably reflect the current level on the interrupt priority line. Doesn’t this cause issues on the Amiga?