Subject: Re: sysinst bug and errors
To: Frederick Bruckman <fredb@immanent.net>
From: Dave Huang <khym@azeotrope.org>
List: port-mac68k
Date: 09/03/2002 20:20:10
On Tue, 3 Sep 2002, Frederick Bruckman wrote:
> What happens if you build a kernel without FPSP (with or without FPU)?

If I'm not mistaken, options FPSP only matters if you're running on a
68[LC]040... sys/arch/mac68k/mac68k/locore.s does a
  cmpl    #FPU_68040,_C_LABEL(fputype) | 68040 FPU?
and only calls the FPSP routines if the comparison is true. So a kernel
without FPSP shouldn't be any different on an '030 machine.

I do wonder about this bit of code around line 581 of locore.s though:

ENTRY_NOPROFILE(fpunsupp)
#if defined(M68040)
        cmpl    #FPU_68040,_C_LABEL(fputype) | 68040 FPU?
        jne     _C_LABEL(illinst)       | no, treat as illinst
#ifdef FPSP
        jmp     _ASM_LABEL(fpsp_unsupp) | yes, go handle it
#endif
Lfp_unsupp:
#endif /* M68040 */
#ifdef FPU_EMULATE
        clrl    %sp@-                   | stack adjust count
        moveml  #0xFFFF,%sp@-           | save registers
        moveq   #T_FPEMULD,%d0          | denote as FP emulation trap
        jra     _ASM_LABEL(fault)       | do it
#else
        jra     _C_LABEL(illinst)
#endif

Shouldn't that jne _C_LABEL(illinst)       | no, treat as illinst
be a jne _C_LABEL(Lfp_unsupp)?

CVS says:

revision 1.80
date: 1997/06/29 06:07:39;  author: scottr;  state: Exp;  lines: +590 -745
Get several cleanup chores out of the way.  The code is functionally
identical to the previous incarnation.

However, a diff between 1.79 and 1.80 shows:
-       cmpl    #FPU_68040,_fputype     | 68040? (see fpu.c)
-       jne     Lfp_unsupp              | no, treat as illinst
+       cmpl    #FPU_68040,_C_LABEL(fputype) | 68040 FPU?
+       jne     _C_LABEL(illinst)       | no, treat as illinst

which doesn't look like a functionally identical change to me :)
-- 
Name: Dave Huang         |  Mammal, mammal / their names are called /
INet: khym@azeotrope.org |  they raise a paw / the bat, the cat /
FurryMUCK: Dahan         |  dolphin and dog / koala bear and hog -- TMBG
Dahan: Hani G Y+C 26 Y++ L+++ W- C++ T++ A+ E+ S++ V++ F- Q+++ P+ B+ PA+ PL++