|Re: [hatari-devel] Microwire register value on Falcon|
[ Thread Index |
| More lists.tuxfamily.org/hatari-devel Archives
On 03/02/2012 23:36, Laurent Sallafranque wrote:
I wanted to separate completly the falcon code and the ste code (for
understanding of the code).
I thought is was easier to understand when the code is in crossbar.c and
when it's in dmasnd.c,
As the first one is only Falcon and the second one is only STE.
But if you prefer to mix both falcon and ste code in dmasnd.c, it's no
problem for me.
I understand the need to split STE/Falcon code, but for some part of the
code that really impacts performance, we should make some trade off.
A more readable way could be to rename DmaSnd_InterruptHandler_Microwire
to InterruptHandler_Microwire then do sthg like that :
void InterruptHandler_Microwire ()
if ( machine == falcon )
This way, dma and crossbar are put at the same "level" : we have a
generic microwire interrupt that calls either STE or Falcon version.
Le 03/02/2012 23:22, Nicolas Pomarède a écrit :
On 03/02/2012 23:02, Laurent Sallafranque wrote:
I've finally taken 10 minutes to write the microwire emulation to the
Like this, it's fully emulated.
in your patch, could you use DmaSnd_InterruptHandler_Microwire instead
of creating Crossbar_InterruptHandler_Microwire ? The reason for this
is that modifying the interrupts array in cycint.c changes the
snapshot memory format, which means you can't load previous snapshot
For the user, we should try to avoid changing snapshot format when
possible, so when running in falcon mode, you can use the
DmaSnd_InterruptHandler_Microwire interrupt instead.
In DmaSnd_InterruptHandler_Microwire, you can then call
Crossbar_InterruptHandler_Microwir if machine == falcon
Interrupt handling in cycint.c is one of the most used part in the
emulation, it's called each time a CPU instruction is processed ; the
smaller we keep the possible interrupts list, the faster this list is
reordered when an interrupt happens.