1995-12-01 20:58:53 +03:00
|
|
|
|
#include <m68k/m68k.h>
|
|
|
|
|
|
|
|
|
|
/* Get generic NetBSD definitions. */
|
|
|
|
|
|
|
|
|
|
#include <netbsd.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* See m68k.h. 7 means 68020 with 68881. */
|
|
|
|
|
|
|
|
|
|
#define TARGET_DEFAULT 7
|
|
|
|
|
|
|
|
|
|
/* Define __HAVE_68881__ in preprocessor, unless -msoft-float is specified.
|
|
|
|
|
This will control the use of inline 68881 insns in certain macros. */
|
|
|
|
|
|
|
|
|
|
#undef CPP_SPEC
|
|
|
|
|
#define CPP_SPEC "%{!msoft-float:-D__HAVE_68881__ -D__HAVE_FPU__} %{posix:-D_POSIX_SOURCE}"
|
|
|
|
|
|
1996-01-16 21:41:47 +03:00
|
|
|
|
#undef ASM_SPEC
|
1996-05-12 22:52:22 +04:00
|
|
|
|
#define ASM_SPEC " %| %{m68030} %{m68040} %{m68060} %{fpic:-k} %{fPIC:-k -K}"
|
1996-01-16 21:41:47 +03:00
|
|
|
|
|
1995-12-01 20:58:53 +03:00
|
|
|
|
/* Names to predefine in the preprocessor for this target machine. */
|
|
|
|
|
|
1996-04-05 00:17:16 +04:00
|
|
|
|
#define CPP_PREDEFINES "-Dunix -Dm68k -Dmc68000 -Dmc68020 -D__NetBSD__ -D__KPRINTF_ATTRIBUTE__ -Asystem(unix) -Asystem(NetBSD) -Acpu(m68k) -Amachine(m68k)"
|
1995-12-01 20:58:53 +03:00
|
|
|
|
|
|
|
|
|
/* Make gcc agree with <machine/ansi.h> */
|
|
|
|
|
|
|
|
|
|
#undef SIZE_TYPE
|
|
|
|
|
#define SIZE_TYPE "unsigned int"
|
|
|
|
|
|
|
|
|
|
#undef PTRDIFF_TYPE
|
|
|
|
|
#define PTRDIFF_TYPE "int"
|
|
|
|
|
|
|
|
|
|
#undef WCHAR_TYPE
|
|
|
|
|
#define WCHAR_TYPE "int"
|
|
|
|
|
|
|
|
|
|
#undef WCHAR_UNSIGNED
|
|
|
|
|
#define WCHAR_UNSIGNED 0
|
|
|
|
|
|
|
|
|
|
#undef WCHAR_TYPE_SIZE
|
|
|
|
|
#define WCHAR_TYPE_SIZE 32
|
|
|
|
|
|
|
|
|
|
/* Every structure or union's size must be a multiple of 2 bytes. */
|
|
|
|
|
|
|
|
|
|
#define STRUCTURE_SIZE_BOUNDARY 16
|
|
|
|
|
|
|
|
|
|
/* This is BSD, so it wants DBX format. */
|
|
|
|
|
|
|
|
|
|
#define DBX_DEBUGGING_INFO
|
|
|
|
|
|
|
|
|
|
/* Do not break .stabs pseudos into continuations. */
|
|
|
|
|
|
|
|
|
|
#define DBX_CONTIN_LENGTH 0
|
|
|
|
|
|
|
|
|
|
/* This is the char to use for continuation (in case we need to turn
|
|
|
|
|
continuation back on). */
|
|
|
|
|
|
|
|
|
|
#define DBX_CONTIN_CHAR '?'
|
|
|
|
|
|
|
|
|
|
/* Don't default to pcc-struct-return, because gcc is the only compiler, and
|
|
|
|
|
we want to retain compatibility with older gcc versions. */
|
|
|
|
|
#define DEFAULT_PCC_STRUCT_RETURN 0
|
1997-10-25 01:25:46 +04:00
|
|
|
|
|
|
|
|
|
/* Finalize the trampoline by flushing the insn cache. */
|
|
|
|
|
|
|
|
|
|
#undef FINALIZE_TRAMPOLINE
|
|
|
|
|
#define FINALIZE_TRAMPOLINE(TRAMP) \
|
|
|
|
|
emit_library_call (gen_rtx (SYMBOL_REF, Pmode, "__cachectl"), \
|
|
|
|
|
0, VOIDmode, 2, TRAMP, Pmode, \
|
|
|
|
|
GEN_INT(TRAMPOLINE_SIZE), SImode);
|
|
|
|
|
|
|
|
|
|
#undef TRANSFER_FROM_TRAMPOLINE
|
|
|
|
|
#define TRANSFER_FROM_TRAMPOLINE \
|
|
|
|
|
asm ( \
|
|
|
|
|
GLOBAL_ASM_OP " ___cachectl; \
|
|
|
|
|
___cachectl: \
|
|
|
|
|
movel sp@(4),a1; \
|
|
|
|
|
movel sp@(8),d1; \
|
|
|
|
|
movel #0x80000004,d0; \
|
|
|
|
|
trap #12; \
|
|
|
|
|
rts"); \
|
|
|
|
|
\
|
|
|
|
|
void \
|
|
|
|
|
__transfer_from_trampoline () \
|
|
|
|
|
{ \
|
|
|
|
|
register char *a0 asm ("%a0"); \
|
|
|
|
|
asm (GLOBAL_ASM_OP " ___trampoline"); \
|
|
|
|
|
asm ("___trampoline:"); \
|
|
|
|
|
asm volatile ("move%.l %0,%@" : : "m" (a0[22])); \
|
|
|
|
|
asm volatile ("move%.l %1,%0" : "=a" (a0) : "m" (a0[18])); \
|
|
|
|
|
asm ("rts":); \
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|