Port-atari archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: gcc -m68060 option in kernel Makefiles



is%NetBSD.org@localhost wrote:

> > - The 64/32 integer division (DIV?.L Dn,Dr:Dq) has to be emulated.
> > - The 32*32->64 bit integer multiplication (MUL?.L) has to be emulated.
> 
> Yes, and -m68060 avoids that. What I wanted to say - -m68060 does not
> *add* any instructions we use in the kernel.

src/gnu/dist/gcc4/gcc/config/m68k/m68k.c has the following code:
---
    case OPT_m68020_60:
      target_flags &= ~MASK_ALL_CPU_BITS;
      target_flags |= (MASK_BITFIELD | MASK_68881 | MASK_68020
                       | MASK_68040 | MASK_68060);
      return true;

    case OPT_m68030:
      target_flags &= ~MASK_ALL_CPU_BITS;
      target_flags |= MASK_68020 | MASK_68030 | MASK_BITFIELD;
      return true;

    case OPT_m68040:
      target_flags &= ~MASK_ALL_CPU_BITS;
      target_flags |= (MASK_68020 | MASK_68881 | MASK_BITFIELD
                       | MASK_68040_ONLY | MASK_68040);
      return true;

    case OPT_m68060:
      target_flags &= ~MASK_ALL_CPU_BITS;
      target_flags |= (MASK_68020 | MASK_68881 | MASK_BITFIELD
                       | MASK_68040_ONLY | MASK_68060);
      return true;
---

So there is not 060 only instruction but some 040/060 only ones?

MASK_68040_ONLY is used the following print_operand(), but
I'm not sure what it does.

---
void
print_operand (FILE *file, rtx op, int letter)
{
  if (letter == '.')

 :

  else if (letter == '$')
    {
      if (TARGET_68040_ONLY)
        fprintf (file, "s");
    }
  else if (letter == '&')
    {
      if (TARGET_68040_ONLY)
        fprintf (file, "d");
    }
  else if (letter == '/')
    asm_fprintf (file, "%R");

---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index