Re: [hatari-devel] WinUAE FPU model values options? |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
Hi,
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.
> 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.
Also, shouldn't FPU_CPU define be renamed either FPU_68040 or FPU_68060?
- Eero
> Regards
>
> Laurent
>
> 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/includes/
> > 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