Re: [hatari-devel] WinUAE FPU model values options? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
Hi,
On tiistai 22 toukokuu 2012, Eero Tamminen wrote:
> On torstai 22 maaliskuu 2012, Eero Tamminen wrote:
> > On torstai 22 maaliskuu 2012, Laurent Sallafranque wrote:
> > > At first glance, it seems wrong to me too.
> > >
> > > If the initial question was : should we reboot when the FPU is
> > > changed, I would answear yes.
>
> Should bCompatibleFPU change trigger reset too, not just FPU type change?
>
> > > Since now, I've tried to add as little change as possible to the
> > > winuae code, to keep updates as easy as possible.
> > >
> > > Could you explain what this change is supposed to correct ?
> >
> > Make FPU type values closer to ones used by WinUAE FPU emulation I
> > guess, as current Hatari configuration.h enum values for those are
> > 0-3, whereas WinUAE seems to be usign values 0, 68881, 68882, 68040
> > and 68060 for it.
With the attached patch GEMBench reported WinUAE Falcon FPU speed
comes down from 206% to 200% which is an improvement too I guess...
> > Also, shouldn't FPU_CPU define be renamed either FPU_68040 or
> > FPU_68060?
> Laurent?
?
- Eero
>
>
> - Eero
>
> > > Le 22/03/2012 20:16, Eero Tamminen a écrit :
> > > > Hi,
> > > >
> > > > On lauantai 17 maaliskuu 2012, Andreas Grabher wrote:
> > > >> There's a problem with detection, if a reset is necessary in new
> > > >> cpu core. It has been fixed in Previous. Maybe take a look at
> > > >> previous sources and FPUTYPE enum in configuration.h and
> > > >> M68000_CheckCpuSettings in m68000.c.
> > > >
> > > > You mean these changes:
> > > > http://previous.svn.sourceforge.net/viewvc/previous/trunk/src/inclu
> > > > de s/ configuration.h?r1=137&r2=149 ?
> > > >
> > > > Yea, the FPU values given in configuration.h indeed seem wrong:
> > > > ---------------
> > > > #if ENABLE_WINUAE_CPU
> > > > typedef enum
> > > > {
> > > >
> > > > FPU_NONE,
> > > > FPU_68881,
> > > > FPU_68882,
> > > > FPU_CPU
> > > >
> > > > } FPUTYPE;
> > > > #endif
> > > > ...
> > > >
> > > > FPUTYPE n_FPUType;
> > > >
> > > > ---------------
> > > >
> > > >
> > > > As they're transferred to "fpu_model" and WinUAE code uses these
> > > > kind of values for "fpu_model":
> > > > ---------------
> > > > static int get_fpu_version (void)
> > > > {
> > > >
> > > > int v = 0;
> > > >
> > > > if (currprefs.fpu_revision>= 0)
> > > >
> > > > return currprefs.fpu_revision;
> > > >
> > > > switch (currprefs.fpu_model)
> > > > {
> > > >
> > > > case 68881:
> > > > v = 0x1f;
> > > > break;
> > > >
> > > > case 68882:
> > > > v = 0x20; /* ??? */
> > > > break;
> > > >
> > > > case 68040:
> > > > v = 0x41;
> > > > break;
> > > >
> > > > }
> > > > return v;
> > > >
> > > > }
> > > > ---------------
> > > > $ grep fpu_model $(find src/ -type f)
> > > > src/m68000.c: changed_prefs.fpu_model =
> > > >
> > > > ConfigureParams.System.n_FPUType; src/cpu/custom.c:
> > > > p->fpu_model = 68040;
> > > >
> > > > src/cpu/custom.c: p->fpu_model = 68060;
> > > > src/cpu/newcpu.c: currprefs.fpu_model =
> > > > changed_prefs.fpu_model; src/cpu/newcpu.c: regs.pcr =
> > > > currprefs.fpu_model == 68060 ? MC68060_PCR : MC68EC060_PCR;
> > > > src/cpu/newcpu.c: if (currprefs.fpu_model) {
> > > > src/cpu/hatari-glue.c: currprefs.fpu_model =
> > > > changed_prefs.fpu_model = ConfigureParams.System.n_FPUType;
> > > > src/cpu/fpp.c: if (currprefs.fpu_model == 68060) {
> > > > src/cpu/fpp.c: } else if (currprefs.fpu_model == 68040) {
> > > > src/cpu/fpp.c: int idle_size = currprefs.fpu_model ==
> > > > 68882 ? 0x38
> > > >
> > > > : 0x18;
> > > >
> > > > src/cpu/fpp.c: if (currprefs.fpu_model == 68060) {
> > > > src/cpu/fpp.c: } else if (currprefs.fpu_model == 68040) {
> > > > ---------------
> > > >
> > > > (I left only interesting lines for last part.)
> > > >
> > > >
> > > > Laurent?
> > > >
> > > > - Eero
diff -r 5340f289e88c src/includes/configuration.h
--- a/src/includes/configuration.h Wed May 23 22:48:37 2012 +0300
+++ b/src/includes/configuration.h Sun May 27 23:57:30 2012 +0300
@@ -261,10 +261,10 @@
#if ENABLE_WINUAE_CPU
typedef enum
{
- FPU_NONE,
- FPU_68881,
- FPU_68882,
- FPU_CPU
+ FPU_NONE = 0,
+ FPU_68881 = 68881,
+ FPU_68882 = 68882,
+ FPU_CPU = 68040
} FPUTYPE;
#endif