[PATCH] Better checking of ISA/ASE/ABI options for MIPS gas
Thiemo Seufer
ths@networkno.de
Tue May 23 04:40:00 GMT 2006
Eric Christopher wrote:
> >
> >I'm somewhat uncertain about the ABI incompatibility warning for
> >wrong FP register widths, does it make sense to force a different
> >FP register width in the assembler in some cases?
> >
>
> No. No more reading the minds of programmers. :)
Well, for GP registers we do even as_bad().
> btw, the indention on the code in the diff is wacky. I assume it's
> correct in your files?
I think so.
> >@@ -1031,7 +1052,13 @@ static int validate_mips_insn (const str
> > struct mips_cpu_info
> > {
> > const char *name; /* CPU or ISA name. */
> >- int is_isa; /* Is this an ISA? (If 0, a CPU.) */
> >+ int flags;
> >+#define MIPS_CPU_IS_ISA 0x0001 /* Is this an ISA? (If 0, a
> >CPU.) */
> >+#define MIPS_CPU_ASE_SMARTMIPS 0x0002 /* CPU implements SmartMIPS
> >ASE */
> >+#define MIPS_CPU_ASE_DSP 0x0004 /* CPU implements DSP ASE */
> >+#define MIPS_CPU_ASE_MT 0x0008 /* CPU implements MT ASE */
> >+#define MIPS_CPU_ASE_MIPS3D 0x0010 /* CPU implements MIPS-3D ASE */
> >+#define MIPS_CPU_ASE_MDMX 0x0020 /* CPU implements MDMX ASE */
> > int isa; /* ISA level. */
> > int cpu; /* CPU number (default CPU if ISA). */
> > };
>
> Ugh. Can you haul these defines out somewhere else?
Sure.
> And why change the table to include default extensions for the cpu?
To handle them the same way as the ISA. This is for ASEs which are
always implemented in that particular CPU.
> > /* End of GCC-shared inference code. */
>
> You need to make sure that this shared code is the same logic in both
> places - preferably before committing this.
Yes. Do you think the logic is ok (modulo the FP ABI warning)?
> >+#if 0 /* XXX FIXME */
> >+ /* 32 bit code with 64 bit FP registers. */
> >+ if (!file_mips_fp32 && ABI_NEEDS_32BIT_REGS (mips_abi))
> >+ elf_elfheader (stdoutput)->e_flags |= ???;
> >+#endif
> > }
> >
>
> ???
Same like for MIPS3D, we should tell the linker this object is (possibly)
incompatible to other O32 objects with 32bit FP regs.
Thiemo
More information about the Binutils
mailing list