Subject: Re: mac68k and gcc 4
To: Dave Huang <khym@azeotrope.org>
From: Hauke Fath <hauke@Espresso.Rhein-Neckar.DE>
List: current-users
Date: 09/04/2006 02:02:15
Just a few uninformed comments...
At 3:22 Uhr -0500 3.9.2006, Dave Huang wrote:
>I tried building a -current mac68k kernel with the newly-imported gcc
>4, and ran into a few errors, most of which I'm not too sure about
>how to solve.
[...]
>I run into another problem in macrom.c:
>/usr/src.local/sys/arch/mac68k/mac68k/macrom.c: In function 'mrg_aline_super':
>/usr/src.local/sys/arch/mac68k/mac68k/macrom.c:728: error: unknown
>register name 'fp' in 'asm'
>
>/* put a0 in a0 */
>/* put a1 in a1 */
>/* put d0 in d0 */
>/* put d1 in d1 */
>/* put trapaddr in a2 */
>/* save a6 */
>/* call the damn routine */
>/* restore a6 */
>/* store d0 in d0bucket */
>/* store a0 in d0bucket */
>/* This will change a2,a1,d1,d0,a0 and possibly a6 */
>
> __asm volatile (
> " movl %2@,%%d0 \n"
> " movl %2@(4),%%d1 \n"
> " movl %2@(32),%%a0 \n"
> " movl %2@(36),%%a1 \n"
> " movl %3,%%a2 \n"
> " jbsr %%a2@ \n"
> " movl %%a0,%0 \n"
> " movl %%d0,%1"
>
> : "=g" (a0bucket), "=g" (d0bucket)
>
> : "a" (&frame->f_regs), "g" (trapaddr)
>
> : "d0","d1","a0","a1","a2",
>#ifdef __ELF__
> "fp"
>#else
> "a6"
>#endif
>
>I don't know why the clobber register spec is "fp" for ELF and "a6"
>otherwise...
The pre-ELF as(1) was considerably older (and had changes not fed back to
GNU as) than the ELF as(1) from binutils that replaced it. What does the
netbsd-4 info page for as(1) say?
>isn't "fp" just an alias for "a6"? I tried changing it to
>use "a6" unconditionally, but that doesn't work either:
>
>/usr/src.local/sys/arch/mac68k/mac68k/macrom.c: In function 'mrg_aline_super':
>/usr/src.local/sys/arch/mac68k/mac68k/macrom.c:763: error: %a6 cannot be
>used in asm here
>
>The comments say "save a6" and "restore a6", but I don't see where
>that happens.
Nor do I. Ask Allen Briggs, since according to 'cvs annotate' he added the
comments. ;)
> They also say that it'll possibly change A6, but I don't
>see when that would happen either.
Ask Scott Reynolds, since... see above. Although Allen may be easier to reach.
> Are there some ROM toolbox calls
>that will modify A6? That seems like it'd be a bad thing for a
>subroutine to not restore the frame pointer...
>
>Anyways, I don't know if it's the right thing to do, but I just
>removed fp/a6 from the list of clobbered registers.
>
>That gets us past macrom.c and on to this:
[...]
Did you get a working kernel in the end? I have an idle Quadra 650 around
that I could drop a snapshot of netbsd-4 onto...
hauke
--
"It's never straight up and down" (DEVO)