Re: gcc -m68060 option in kernel Makefiles
Izumi Tsutsui <[email protected]> Sun, 18 Jan 2009 00:19:18 +0900
| Newsgroups | gmane.os.netbsd.ports.atari,gmane.os.netbsd.ports.amiga |
|---|---|
| Message-ID | <[email protected]> |
[email protected] 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