From: Richard Kenner Date: Wed, 19 Mar 1997 22:10:39 +0000 (-0500) Subject: (ASM_OUTPUT_MI_THUNK): Define. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3cb32ea3fd1172a9573c407655a93b8b81980ba2;p=gcc.git (ASM_OUTPUT_MI_THUNK): Define. From-SVN: r13750 --- diff --git a/gcc/config/m68k/linux.h b/gcc/config/m68k/linux.h index 5a53db14ba9..5807597d7bd 100644 --- a/gcc/config/m68k/linux.h +++ b/gcc/config/m68k/linux.h @@ -1,5 +1,5 @@ /* Definitions for Motorola 68k running Linux with ELF format. - Copyright (C) 1995, 1996 Free Software Foundation, Inc. + Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. This file is part of GNU CC. @@ -354,3 +354,30 @@ do { \ : "d" (_beg), "d" (_len) \ : "%d0", "%d2", "%d3"); \ } + +/* Output code to add DELTA to the first argument, and then jump to FUNCTION. + Used for C++ multiple inheritance. */ +#define ASM_OUTPUT_MI_THUNK(FILE, THUNK_FNDECL, DELTA, FUNCTION) \ +do { \ + if (DELTA > 0 && DELTA <= 8) \ + asm_fprintf (FILE, "\taddq.l %I%d,4(%Rsp)\n", DELTA); \ + else if (DELTA < 0 && DELTA >= -8) \ + asm_fprintf (FILE, "\tsubq.l %I%d,4(%Rsp)\n", -DELTA); \ + else \ + asm_fprintf (FILE, "\tadd.l %I%d,4(%Rsp)\n", DELTA); \ + \ + if (flag_pic) \ + { \ + fprintf (FILE, "\tbra.l "); \ + assemble_name \ + (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \ + fprintf (FILE, "@PLTPC\n"); \ + } \ + else \ + { \ + fprintf (FILE, "\tjmp "); \ + assemble_name \ + (FILE, IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (FUNCTION))); \ + fprintf (FILE, "\n"); \ + } \ +} while (0)