Index: src/common/lib/libc/arch/m68k/gen/divsi3.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/common/lib/libc/arch/m68k/gen/divsi3.S,v retrieving revision 1.5 diff -u -p -r1.5 divsi3.S --- src/common/lib/libc/arch/m68k/gen/divsi3.S 7 Sep 2013 19:06:29 -0000 1.5 +++ src/common/lib/libc/arch/m68k/gen/divsi3.S 25 Jan 2015 22:43:41 -0000 @@ -44,14 +44,35 @@ #endif /* LIBC_SCCS and not lint */ /* int / int */ -#ifndef __mc68010__ ENTRY(__divsi3) +#ifndef __mc68010__ movel 4(%sp),%d0 divsl 8(%sp),%d0 rts -END(__divsi3) #else -ENTRY(__divsi3) + +#ifdef __PIC__ + movel 8(%sp), %d0 | load the divisor + bpl 2f + negl %d0 +2: movel %d0,-(%sp) | store abs(divisor) + + movel 8(%sp), %d1 | load the dividend + bpl 1f + negl %d1 +1: movel %d1,-(%sp) | store abs(dividend) + + eorl %d1, %d0 + bpl 3f | branch if sgn(divisor) == sgn(dividend) + PIC_CALL(_C_LABEL(__udivsi3)) + addq #8,%sp + negl %d0 | negate quotient + rts +3: + PIC_CALL(_C_LABEL(__udivsi3)) + addq #8,%sp + rts +#else | NB: this requires that __udivsi3 preserve %a0: movel 4(%sp), %d1 | load the dividend bpl 1f @@ -66,5 +87,6 @@ ENTRY(__divsi3) 3: jmp _C_LABEL(__udivsi3) .Lret: negl %d0 | negate quotient jmp (%a0) -END(__divsi3) +#endif #endif /* __mc68010__ */ +END(__divsi3) Index: src/common/lib/libc/arch/m68k/gen/modsi3.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/common/lib/libc/arch/m68k/gen/modsi3.S,v retrieving revision 1.7 diff -u -p -r1.7 modsi3.S --- src/common/lib/libc/arch/m68k/gen/modsi3.S 4 Mar 2014 04:03:49 -0000 1.7 +++ src/common/lib/libc/arch/m68k/gen/modsi3.S 25 Jan 2015 22:43:41 -0000 @@ -44,8 +44,8 @@ #endif /* LIBC_SCCS and not lint */ /* int % int */ -#ifndef __mc68010__ ENTRY(__modsi3) +#ifndef __mc68010__ movel 4(%sp),%d1 #ifdef __mcoldfire__ remsl 8(%sp),%d0:%d1 @@ -54,9 +54,32 @@ ENTRY(__modsi3) divsll 8(%sp),%d0:%d1 #endif rts -END(__modsi3) #else -ENTRY(__modsi3) +#ifdef __PIC__ +| NB: this requires that __udivsi3 returns the modulus in %d1: + movel 8(%sp), %d1 | load the divisor + bpl 1f + negl %d1 +1: movel %d1,-(%sp) | store abs(divisor) + + movel 8(%sp), %d0 | load the dividend + bpl 2f + negl %d0 + movel %d0,-(%sp) | store abs(dividend) + + PIC_CALL(_C_LABEL(__udivsi3)) + addq #8,%sp + negl %d1 + movl %d1, %d0 | move modulus into %d0 + rts + +2: movel %d0,-(%sp) | store abs(dividend) + PIC_CALL(_C_LABEL(__udivsi3)) + addq #8,%sp + movl %d1, %d0 | move modulus into %d0 + rts +#else + | NB: this requires that __udivsi3 preserve %a0 and return | the modulus in %d1: movel (%sp)+, %a0 | pop return address @@ -66,11 +89,13 @@ ENTRY(__modsi3) 1: movel (%sp), %d0 | load the dividend pea (.Lret,%pc) | push our return address bpl 2f + negl 4(%sp) | store abs(dividend) subql #2, (%sp) | adjust return address 2: jmp _C_LABEL(__udivsi3) negl %d1 | negate modulus .Lret: movl %d1, %d0 | move modulus into %d0 jmp (%a0) -END(__modsi3) +#endif #endif /* __mc68010__ */ +END(__modsi3) Index: src/common/lib/libc/arch/m68k/gen/mulsi3.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/common/lib/libc/arch/m68k/gen/mulsi3.S,v retrieving revision 1.4 diff -u -p -r1.4 mulsi3.S --- src/common/lib/libc/arch/m68k/gen/mulsi3.S 16 Jul 2013 23:24:18 -0000 1.4 +++ src/common/lib/libc/arch/m68k/gen/mulsi3.S 1 Feb 2015 16:49:21 -0000 @@ -49,8 +49,6 @@ ENTRY(__mulsi3) movel 4(%sp),%d0 mulsl 8(%sp),%d0 #else -| NB: this requires that __udivsi3 preserve %a0 and return -| the modulus in %d1: movew 6(%sp), %d0 movel %d0, %a0 | save B muluw 8(%sp), %d0 | %d0 holds B * C Index: src/common/lib/libc/arch/m68k/gen/umodsi3.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/common/lib/libc/arch/m68k/gen/umodsi3.S,v retrieving revision 1.5 diff -u -p -r1.5 umodsi3.S --- src/common/lib/libc/arch/m68k/gen/umodsi3.S 4 Mar 2014 06:15:33 -0000 1.5 +++ src/common/lib/libc/arch/m68k/gen/umodsi3.S 25 Jan 2015 22:43:41 -0000 @@ -44,8 +44,8 @@ #endif /* LIBC_SCCS and not lint */ /* unsigned % unsigned */ -#ifndef __mc68010__ ENTRY(__umodsi3) +#ifndef __mc68010__ movel 4(%sp),%d1 #ifdef __mcoldfire__ remul 8(%sp),%d0:%d1 @@ -54,14 +54,22 @@ ENTRY(__umodsi3) divull 8(%sp),%d0:%d1 #endif rts -END(__umodsi3) #else -ENTRY(__umodsi3) +#ifdef __PIC__ +| NB: this requires that __udivsi3 returns the modulus in %d1: + movel 8(%sp),-(%sp) + movel 8(%sp),-(%sp) + PIC_CALL(_C_LABEL(__udivsi3)) + addq #8,%sp + movel %d1, %d0 | move the modulus into %d0 + rts +#else | NB: this requires that __udivsi3 preserve the %a0 | register, and that it returns the modulus in %d1: movel (%sp)+, %a0 | pop the return address jsr _C_LABEL(__udivsi3) movel %d1, %d0 | move the modulus into %d0 jmp (%a0) | return -END(__umodsi3) +#endif #endif /* __mc68010__ */ +END(__umodsi3) Index: src/distrib/sets/lists/comp/mi =================================================================== RCS file: /home/chs/netbsd/cvs/src/distrib/sets/lists/comp/mi,v retrieving revision 1.1944 diff -u -p -r1.1944 mi --- src/distrib/sets/lists/comp/mi 26 Jan 2015 00:22:02 -0000 1.1944 +++ src/distrib/sets/lists/comp/mi 1 Feb 2015 01:53:18 -0000 @@ -4123,8 +4123,8 @@ ./usr/libexec/f771 comp-obsolete gcc=4,obsolete ./usr/libexec/lint1 comp-c-bin ./usr/libexec/lint2 comp-c-bin -./usr/libexec/lto-wrapper comp-c-bin gcc=48,pic -./usr/libexec/lto1 comp-c-bin gcc=48,pic +./usr/libexec/lto-wrapper comp-c-bin gcc=48,pic,gcccmds +./usr/libexec/lto1 comp-c-bin gcc=48,pic,gcccmds ./usr/libexec/pcpp comp-c-bin pcc ./usr/sbin/config comp-obsolete obsolete ./usr/sbin/config.new comp-obsolete obsolete Index: src/distrib/sets/lists/comp/shl.mi =================================================================== RCS file: /home/chs/netbsd/cvs/src/distrib/sets/lists/comp/shl.mi,v retrieving revision 1.273 diff -u -p -r1.273 shl.mi --- src/distrib/sets/lists/comp/shl.mi 25 Jan 2015 15:50:30 -0000 1.273 +++ src/distrib/sets/lists/comp/shl.mi 1 Feb 2015 09:47:06 -0000 @@ -46,7 +46,8 @@ ./usr/lib/libg++_pic.a comp-obsolete obsolete ./usr/lib/libg2c_pic.a comp-fortran-lib gcc=3,picinstall ./usr/lib/libg2c_pic.a comp-obsolete gcc=4,obsolete -./usr/lib/libgcc_eh.a comp-c-lib gcccmds +./usr/lib/libgcc_eh.a comp-c-lib gcc=45 +./usr/lib/libgcc_eh.a comp-c-lib gcc=48 ./usr/lib/libgcc_eh_p.a comp-c-proflib obsolete ./usr/lib/libgcc_eh_pic.a comp-c-piclib obsolete ./usr/lib/libgcc_pic.a comp-c-lib gcc=4,picinstall @@ -123,7 +124,7 @@ ./usr/lib/libnpf_pic.a comp-npf-piclib npf,picinstall ./usr/lib/libntp_pic.a comp-obsolete obsolete ./usr/lib/libnvpair_pic.a comp-zfs-piclib zfs,picinstall -./usr/lib/libobjc_pic.a comp-objc-piclib gcccmds,picinstall +./usr/lib/libobjc_pic.a comp-objc-piclib picinstall ./usr/lib/libopcodes.so.6 comp-c-shlib binutils ./usr/lib/libopcodes.so.6.0 comp-c-shlib binutils ./usr/lib/libopenpgpsdk_pic.a comp-obsolete obsolete @@ -244,7 +245,7 @@ ./usr/lib/libssh_pic.a comp-c-piclib crypto,picinstall ./usr/lib/libssl_pic.a comp-c-piclib crypto,picinstall ./usr/lib/libssp_pic.a comp-obsolete obsolete -./usr/lib/libstdc++_pic.a comp-cxx-piclib cxx,gcccmds,libstdcxx,picinstall +./usr/lib/libstdc++_pic.a comp-cxx-piclib cxx,libstdcxx,picinstall ./usr/lib/libtddl_pic.a comp-c-piclib tpm,picinstall ./usr/lib/libtelnet_pic.a comp-obsolete obsolete ./usr/lib/libtermcap_pic.a comp-c-piclib picinstall Index: src/external/gpl3/binutils/dist/bfd/elf32-m68k.c =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/binutils/dist/bfd/elf32-m68k.c,v retrieving revision 1.5 diff -u -p -r1.5 elf32-m68k.c --- src/external/gpl3/binutils/dist/bfd/elf32-m68k.c 26 Aug 2014 17:03:51 -0000 1.5 +++ src/external/gpl3/binutils/dist/bfd/elf32-m68k.c 1 Feb 2015 09:18:01 -0000 @@ -614,6 +614,46 @@ static const struct elf_m68k_plt_info el elf_cpu32_plt_entry, { 4, 18 }, 10 }; +#define M68000_PLT_ENTRY_SIZE 36 +/* Procedure linkage table entries for m68000/m68008/m68010 */ +static const bfd_byte elf_m68000_plt0_entry[M68000_PLT_ENTRY_SIZE] = +{ + 0x20, 0x3c, /* move.l #offset,%d0 */ + 0, 0, 0, 0, /* + (.got + 4) - . */ + 0x2f, 0x3b, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l),-(%sp) */ + 0x20, 0x3c, /* move.l #offset,%d0 */ + 0, 0, 0, 0, /* + (.got + 8) - . */ + 0x22, 0x7b, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l),%a1 */ + 0x4e, 0xd1, /* jmp (%a1) */ + 0, 0, 0, 0, /* pad out to 36 bytes. */ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, +}; + +static const bfd_byte elf_m68000_plt_entry[M68000_PLT_ENTRY_SIZE] = +{ + 0x20, 0x3c, /* move.l #offset,%d0 */ + 0, 0, 0, 0, /* + (.got.plt entry) - . */ + 0x22, 0x7b, 0x08, 0xfa, /* move.l (-6,%pc,%d0:l),%a1 */ + 0x4e, 0xd1, /* jmp (%a1) */ + 0x2f, 0x3c, /* move.l #offset,-(%sp) */ + 0, 0, 0, 0, /* + reloc index */ + 0x20, 0x3c, /* move.l #offset,%d0 */ + 0xff, 0xff, 0xff, 0xf8, /* + .plt - . */ + 0x61, 0x00, 0x00, 0x02, /* bsr */ + 0xd0, 0x9f, /* addl (%sp)+,%d0 */ + 0x22, 0x40, /* moveal %d0,%a1 */ + 0x4e, 0xd1, /* jmp (%a1) */ + 0, 0, /* pad out to 36 bytes. */ +}; + +static const struct elf_m68k_plt_info elf_m68000_plt_info = { + M68000_PLT_ENTRY_SIZE, + elf_m68000_plt0_entry, { 2, 12 }, + elf_m68000_plt_entry, { 2, 20 }, 12 +}; + /* The m68k linker needs to keep track of the number of relocs that it decides to copy in check_relocs for each symbol. This is so that it can discard PC relative relocs if it doesn't need them when linking @@ -3059,6 +3099,8 @@ elf_m68k_get_plt_info (bfd *output_bfd) unsigned int features; features = bfd_m68k_mach_to_features (bfd_get_mach (output_bfd)); + if (features & m68000) + return &elf_m68000_plt_info; if (features & cpu32) return &elf_cpu32_plt_info; if (features & mcfisa_b) Index: src/external/gpl3/gcc/dist/gcc/config.gcc =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/dist/gcc/config.gcc,v retrieving revision 1.32 diff -u -p -r1.32 config.gcc --- src/external/gpl3/gcc/dist/gcc/config.gcc 10 Jan 2015 01:06:41 -0000 1.32 +++ src/external/gpl3/gcc/dist/gcc/config.gcc 25 Jan 2015 22:43:41 -0000 @@ -1775,8 +1775,8 @@ m68010-*-netbsdelf* | m68k-*-netbsdelf* ;; m68010*) target_cpu_default="m68010" - tmake_file="m68k/t-m68kelf m68k/t-m68010-netbsd" default_m68k_cpu=68010 + tmake_file="${tmake_file} m68k/t-m68010-netbsd" tmake_file="${tmake_file} m68k/t-floatlib" ;; *) Index: src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.c =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.c,v retrieving revision 1.1.1.2 diff -u -p -r1.1.1.2 m68k.c --- src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.c 1 Mar 2014 08:43:26 -0000 1.1.1.2 +++ src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.c 25 Jan 2015 22:43:41 -0000 @@ -2176,7 +2176,7 @@ m68k_wrap_symbol (rtx x, enum m68k_reloc use_x_p = (base_reg == pic_offset_table_rtx) ? TARGET_XGOT : TARGET_XTLS; - if (TARGET_COLDFIRE && use_x_p) + if (TARGET_68010 || (TARGET_COLDFIRE && use_x_p)) /* When compiling with -mx{got, tls} switch the code will look like this: move.l @, @@ -2988,7 +2988,7 @@ output_move_simode_const (rtx *operands) if (src == 0 && (DATA_REG_P (dest) || MEM_P (dest)) /* clr insns on 68000 read before writing. */ - && ((TARGET_68010 || TARGET_COLDFIRE) + && ((TARGET_68020 || TARGET_COLDFIRE) || !(MEM_P (dest) && MEM_VOLATILE_P (dest)))) return "clr%.l %0"; else if (GET_MODE (dest) == SImode && valid_mov3q_const (src)) @@ -3040,7 +3040,7 @@ output_move_himode (rtx *operands) && (DATA_REG_P (operands[0]) || GET_CODE (operands[0]) == MEM) /* clr insns on 68000 read before writing. */ - && ((TARGET_68010 || TARGET_COLDFIRE) + && ((TARGET_68020 || TARGET_COLDFIRE) || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) return "clr%.w %0"; @@ -3075,7 +3075,7 @@ output_move_qimode (rtx *operands) /* clr and st insns on 68000 read before writing. */ if (!ADDRESS_REG_P (operands[0]) - && ((TARGET_68010 || TARGET_COLDFIRE) + && ((TARGET_68020 || TARGET_COLDFIRE) || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) { if (operands[1] == const0_rtx) @@ -3109,7 +3109,7 @@ output_move_stricthi (rtx *operands) { if (operands[1] == const0_rtx /* clr insns on 68000 read before writing. */ - && ((TARGET_68010 || TARGET_COLDFIRE) + && ((TARGET_68020 || TARGET_COLDFIRE) || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) return "clr%.w %0"; return "move%.w %1,%0"; @@ -3120,7 +3120,7 @@ output_move_strictqi (rtx *operands) { if (operands[1] == const0_rtx /* clr insns on 68000 read before writing. */ - && ((TARGET_68010 || TARGET_COLDFIRE) + && ((TARGET_68020 || TARGET_COLDFIRE) || !(GET_CODE (operands[0]) == MEM && MEM_VOLATILE_P (operands[0])))) return "clr%.b %0"; return "move%.b %1,%0"; Index: src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.md =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.md,v retrieving revision 1.3 diff -u -p -r1.3 m68k.md --- src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.md 1 Mar 2014 08:58:31 -0000 1.3 +++ src/external/gpl3/gcc/dist/gcc/config/m68k/m68k.md 25 Jan 2015 22:43:41 -0000 @@ -7112,7 +7112,7 @@ } else if (MOTOROLA) { - if (TARGET_COLDFIRE) + if (TARGET_COLDFIRE || TARGET_68010) /* Load the full 32-bit PC-relative offset of _GLOBAL_OFFSET_TABLE_ into the PIC register, then use it to calculate the absolute value. The offset and "lea" Index: src/external/gpl3/gcc/dist/gcc/config/m68k/netbsd-elf.h =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/dist/gcc/config/m68k/netbsd-elf.h,v retrieving revision 1.7 diff -u -p -r1.7 netbsd-elf.h --- src/external/gpl3/gcc/dist/gcc/config/m68k/netbsd-elf.h 1 Mar 2014 09:04:12 -0000 1.7 +++ src/external/gpl3/gcc/dist/gcc/config/m68k/netbsd-elf.h 25 Jan 2015 22:43:41 -0000 @@ -91,11 +91,6 @@ along with GCC; see the file COPYING3. #undef LINK_SPEC #define LINK_SPEC NETBSD_LINK_SPEC_ELF -/* NetBSD/sun2 does not support shlibs, avoid using libgcc_pic. */ -#if TARGET_DEFAULT_CPU == 0 -#undef REAL_LIBGCC_SPEC -#endif - #define NETBSD_ENTRY_POINT "_start" /* Output assembler code to FILE to increment profiler label # LABELNO @@ -105,10 +100,10 @@ along with GCC; see the file COPYING3. #define FUNCTION_PROFILER(FILE, LABELNO) \ do \ { \ - if (TARGET_COLDFIRE) \ + if (TARGET_COLDFIRE || TARGET_68010) \ { \ asm_fprintf (FILE, "\tmovea.l #%LLP%d-.,%Ra1\n", (LABELNO)); \ - asm_fprintf (FILE, "\tlea (-6,%Rpc,%Ra1),%Ra1\n", (LABELNO)); \ + asm_fprintf (FILE, "\tlea (-6,%Rpc,%Ra1),%Ra1\n"); \ } \ else \ asm_fprintf (FILE, "\tlea (%LLP%d,%Rpc),%Ra1\n", (LABELNO)); \ Index: src/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 lb1sf68.S --- src/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S 1 Mar 2014 08:41:47 -0000 1.1.1.1 +++ src/external/gpl3/gcc/dist/libgcc/config/m68k/lb1sf68.S 25 Jan 2015 22:43:41 -0000 @@ -189,7 +189,20 @@ see the files COPYING3 and COPYING.RUNTI .macro PICLEA sym, reg movel #_GLOBAL_OFFSET_TABLE_@GOTPC, \reg lea (-6, pc, \reg), \reg +#ifdef __mc68010__ + /* + * The GOT offset can be bigger than 16 bits + * but mc68010 only has a 16-bit displacement addressing mode, + * so use a temp register to load the offset. + */ + movel a2, sp@- + movel #\sym@GOT, a2 + addal a2, \reg + movel sp@+, a2 + movel (\reg), \reg +#else movel \sym@GOT(\reg), \reg +#endif .endm .macro PICPEA sym, areg @@ -199,7 +212,7 @@ see the files COPYING3 and COPYING.RUNTI .endm .macro PICCALL addr -#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) +#if (defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)) || defined(__mc68010__) lea \addr-.-8,a0 jsr pc@(a0) #else @@ -211,7 +224,7 @@ see the files COPYING3 and COPYING.RUNTI /* ISA C has no bra.l instruction, and since this assembly file gets assembled into multiple object files, we avoid the bra instruction entirely. */ -#if defined (__mcoldfire__) && !defined (__mcfisab__) +#if (defined (__mcoldfire__) && !defined (__mcfisab__)) || defined (__mc68010__) lea \addr-.-8,a0 jmp pc@(a0) #else Index: src/external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk,v retrieving revision 1.3 diff -u -p -r1.3 defs.mk --- src/external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk 31 Jan 2015 12:15:24 -0000 1.3 +++ src/external/gpl3/gcc/lib/libgcc/arch/m68000/defs.mk 1 Feb 2015 09:21:17 -0000 @@ -11,7 +11,7 @@ G_LIB1ASMSRC=m68k/lb1sf68.S G_LIB2_DIVMOD_FUNCS=_divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4 G_LIB2FUNCS_ST=_eprintf __gcc_bcmp G_LIB2FUNCS_EXTRA= -G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector +G_LIBGCC2_CFLAGS=-O2 -DIN_GCC -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -fPIC -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector G_SHLIB_MKMAP=${GNUHOSTDIST}/libgcc/mkmap-symver.awk G_SHLIB_MKMAP_OPTS= G_SHLIB_MAPFILES=libgcc-std.ver Index: src/external/public-domain/sqlite/lib/Makefile =================================================================== RCS file: /home/chs/netbsd/cvs/src/external/public-domain/sqlite/lib/Makefile,v retrieving revision 1.6 diff -u -p -r1.6 Makefile --- src/external/public-domain/sqlite/lib/Makefile 7 Mar 2014 18:37:48 -0000 1.6 +++ src/external/public-domain/sqlite/lib/Makefile 25 Jan 2015 22:43:41 -0000 @@ -16,6 +16,10 @@ FILESDIR_sqlite3.pc= /usr/lib/pkgconfig CLEANFILES+=sqlite3.pc +.if ${MACHINE_ARCH} == "m68000" +DBG+= -O1 +.endif + .include all: sqlite3.pc Index: src/lib/csu/arch/m68k/crtbegin.h =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/csu/arch/m68k/crtbegin.h,v retrieving revision 1.4 diff -u -p -r1.4 crtbegin.h --- src/lib/csu/arch/m68k/crtbegin.h 27 Jul 2013 13:07:06 -0000 1.4 +++ src/lib/csu/arch/m68k/crtbegin.h 25 Jan 2015 22:43:41 -0000 @@ -30,7 +30,13 @@ __asm( ".pushsection .init" #ifdef __pic__ +#ifdef __mc68010__ +"\n\t" "movel #__do_global_ctors_aux - .,%a0" +"\n\t" "lea (-8,%pc,%a0),%a0" +"\n\t" "jsr (%a0)" +#else "\n\t" "bsrl __do_global_ctors_aux" +#endif #else "\n\t" "jsr __do_global_ctors_aux" #endif @@ -38,7 +44,13 @@ __asm( ".pushsection .init" __asm( ".pushsection .fini" #ifdef __pic__ +#ifdef __mc68010__ +"\n\t" "movel #__do_global_dtors_aux - .,%a0" +"\n\t" "lea (-8,%pc,%a0),%a0" +"\n\t" "jsr (%a0)" +#else "\n\t" "bsrl __do_global_dtors_aux" +#endif #else "\n\t" "jsr __do_global_dtors_aux" #endif Index: src/lib/libc/arch/m68k/Makefile.inc =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/Makefile.inc,v retrieving revision 1.17 diff -u -p -r1.17 Makefile.inc --- src/lib/libc/arch/m68k/Makefile.inc 4 Mar 2014 06:30:40 -0000 1.17 +++ src/lib/libc/arch/m68k/Makefile.inc 25 Jan 2015 22:43:41 -0000 @@ -2,7 +2,11 @@ SRCS+= __sigaction14_sigtramp.c __sigtramp2.S __m68k_read_tp.S __mmap.S -ASM+= _lwp_getprivate.S mremap.S +SRCS+= _lwp_getprivate.S mremap.S + +.if ${MACHINE_ARCH} == "m68000" +SRCS+= mulsi3.S +.endif CPPFLAGS+= -I. # for assym.h Index: src/lib/libc/arch/m68k/SYS.h =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/SYS.h,v retrieving revision 1.18 diff -u -p -r1.18 SYS.h --- src/lib/libc/arch/m68k/SYS.h 24 Jul 2013 15:38:07 -0000 1.18 +++ src/lib/libc/arch/m68k/SYS.h 1 Feb 2015 17:01:59 -0000 @@ -46,6 +46,15 @@ #endif #define CERROR _C_LABEL(__cerror) +#ifdef __mc68010__ +#define JCS_CERROR jcs 999f +#define JBRA_CERROR LEA_LCL(CERROR, %a1) ; jmp (%a1) +#define CERROR_TRAMP 999: ; JBRA_CERROR +#else +#define JCS_CERROR jcs CERROR +#define JBRA_CERROR jbra CERROR +#define CERROR_TRAMP +#endif #define _SYSCALL_NOERROR(x,y) \ ENTRY(x); \ @@ -53,7 +62,7 @@ #define _SYSCALL(x,y) \ _SYSCALL_NOERROR(x,y); \ - jcs CERROR + JCS_CERROR #define SYSCALL_NOERROR(x) \ _SYSCALL_NOERROR(x,x) @@ -69,6 +78,7 @@ #define PSEUDO(x,y) \ _SYSCALL(x,y); \ rts; \ + CERROR_TRAMP; \ END(x) #define RSYSCALL_NOERROR(x) \ Index: src/lib/libc/arch/m68k/gen/Makefile.inc =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/Makefile.inc,v retrieving revision 1.33 diff -u -p -r1.33 Makefile.inc --- src/lib/libc/arch/m68k/gen/Makefile.inc 18 Mar 2014 18:20:37 -0000 1.33 +++ src/lib/libc/arch/m68k/gen/Makefile.inc 1 Feb 2015 09:51:54 -0000 @@ -21,9 +21,8 @@ SRCS+= infinityl.c SRCS+= fpclassifyl.c isfinitel.c isinfl.c isnanl.c signbitl.c .endif -SRCS+= ashlsi3.S ashrsi3.S \ - lshlsi3.S lshrsi3.S \ - negdf2.S negsf2.S +SRCS+= ashlsi3.S ashrsi3.S lshlsi3.S lshrsi3.S + SRCS+= bswap16.S bswap32.S bswap64.S SRCS+= _lwp.c CPPFLAGS._lwp.c += -D_LIBC_SOURCE Index: src/lib/libc/arch/m68k/gen/_setjmp.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/_setjmp.S,v retrieving revision 1.9 diff -u -p -r1.9 _setjmp.S --- src/lib/libc/arch/m68k/gen/_setjmp.S 16 Jul 2013 22:12:20 -0000 1.9 +++ src/lib/libc/arch/m68k/gen/_setjmp.S 25 Jan 2015 22:43:41 -0000 @@ -85,6 +85,6 @@ ok: rts botch: - jbsr PIC_PLT(_C_LABEL(longjmperror)) + PIC_CALL(_C_LABEL(longjmperror)) stop #0 END(_longjmp) Index: src/lib/libc/arch/m68k/gen/resumecontext.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/resumecontext.S,v retrieving revision 1.8 diff -u -p -r1.8 resumecontext.S --- src/lib/libc/arch/m68k/gen/resumecontext.S 17 Jul 2013 03:04:54 -0000 1.8 +++ src/lib/libc/arch/m68k/gen/resumecontext.S 25 Jan 2015 22:43:41 -0000 @@ -46,16 +46,16 @@ ENTRY(_resumecontext) subl #(4 + UC_SIZE),%sp /* retaddr preservation + ucontext_t */ lea (%sp),%a0 movl %a0,-(%sp) - jbsr PIC_PLT(_C_LABEL(_getcontext)) + PIC_CALL(_C_LABEL(_getcontext)) movl (4 + UC_LINK)(%sp),(%sp) /* uc_link */ tstl (%sp) /* check for NULL */ jne 1f - jbsr PIC_PLT(_C_LABEL(exit)) /* cleanly exit(0) */ + PIC_CALL(_C_LABEL(exit)) /* cleanly exit(0) */ jmp 2f -1: jbsr PIC_PLT(_C_LABEL(setcontext)) +1: PIC_CALL(_C_LABEL(setcontext)) /* NOTREACHED */ /* But just in case... */ 2: movl #-1,(%sp) - jbsr PIC_PLT(_C_LABEL(_exit)) + PIC_CALL(_C_LABEL(_exit)) /* NOTREACHED */ END(_resumecontext) Index: src/lib/libc/arch/m68k/gen/setjmp.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/setjmp.S,v retrieving revision 1.15 diff -u -p -r1.15 setjmp.S --- src/lib/libc/arch/m68k/gen/setjmp.S 17 Jul 2013 03:05:41 -0000 1.15 +++ src/lib/libc/arch/m68k/gen/setjmp.S 25 Jan 2015 22:43:41 -0000 @@ -60,7 +60,7 @@ ENTRY(__setjmp14) lea -12(%sp),%sp /* sizeof(stack_t) */ clrl (%sp) /* ss = NULL */ movl %sp,4(%sp) /* oss = stack_t on stack */ - jbsr PIC_PLT(_C_LABEL(__sigaltstack14)) + PIC_CALL(_C_LABEL(__sigaltstack14)) movl 8(%sp),%d0 /* ss_flags */ andl #1,%d0 /* extract SS_ONSTACK */ @@ -75,7 +75,7 @@ ENTRY(__setjmp14) pea SC_MASK(%a0) /* oset = &sc.sc_mask */ movl #0,-(%sp) /* set = NULL */ movl #0,-(%sp) /* action = 0 */ - jbsr PIC_PLT(_C_LABEL(__sigprocmask14)) + PIC_CALL(_C_LABEL(__sigprocmask14)) addl #12,%sp movl 4(%sp),%a0 /* get jmp_buf pointer again */ Index: src/lib/libc/arch/m68k/gen/sigsetjmp.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/sigsetjmp.S,v retrieving revision 1.10 diff -u -p -r1.10 sigsetjmp.S --- src/lib/libc/arch/m68k/gen/sigsetjmp.S 16 Jul 2013 22:12:20 -0000 1.10 +++ src/lib/libc/arch/m68k/gen/sigsetjmp.S 25 Jan 2015 22:43:41 -0000 @@ -63,9 +63,9 @@ ENTRY(__sigsetjmp14) movl %d1,(_JBLEN * 4)(%a0) /* save at end of area */ tstl %d1 bne dosig - jra PIC_PLT(_C_LABEL(_setjmp)) + PIC_JMP(_C_LABEL(_setjmp)) dosig: - jra PIC_PLT(_C_LABEL(__setjmp14)) + PIC_JMP(_C_LABEL(__setjmp14)) END(__sigsetjmp14) @@ -73,7 +73,7 @@ ENTRY(__siglongjmp14) movl 4(%sp),%a0 /* save area pointer */ tstl (_JBLEN * 4)(%a0) /* check mask... */ bne didsig - jra PIC_PLT(_C_LABEL(_longjmp)) + PIC_JMP(_C_LABEL(_longjmp)) didsig: - jra PIC_PLT(_C_LABEL(__longjmp14)) + PIC_JMP(_C_LABEL(__longjmp14)) END(__siglongjmp14) Index: src/lib/libc/arch/m68k/gen/swapcontext.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/gen/swapcontext.S,v retrieving revision 1.6 diff -u -p -r1.6 swapcontext.S --- src/lib/libc/arch/m68k/gen/swapcontext.S 17 Jul 2013 03:05:17 -0000 1.6 +++ src/lib/libc/arch/m68k/gen/swapcontext.S 25 Jan 2015 22:43:41 -0000 @@ -38,14 +38,14 @@ ENTRY(swapcontext) movl 4(%sp),-(%sp) | push oucp on stack - jbsr PIC_PLT(_C_LABEL(_getcontext)) | getcontext(oucp) + PIC_CALL(_C_LABEL(_getcontext)) | getcontext(oucp) tstl %d0 | OK? jne L1 movl (%sp),%a0 addql #8,UC_MCONTEXT_SP(%a0) | adjust saved stack pointer (again) movl %sp@(4),UC_MCONTEXT_PC(%a0) | adjust saved program counter (again) movl 12(%sp),(%sp) | push ucp on stack - jbsr PIC_PLT(_C_LABEL(setcontext)) | setcontext(ucp) + PIC_CALL(_C_LABEL(setcontext)) | setcontext(ucp) L1: addql #4,%sp | pop ucp rts END(swapcontext) Index: src/lib/libc/arch/m68k/sys/__clone.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/__clone.S,v retrieving revision 1.5 diff -u -p -r1.5 __clone.S --- src/lib/libc/arch/m68k/sys/__clone.S 16 Jul 2013 23:00:15 -0000 1.5 +++ src/lib/libc/arch/m68k/sys/__clone.S 1 Feb 2015 10:03:54 -0000 @@ -53,14 +53,15 @@ ENTRY(__clone) clrl -(%sp) /* Fake return address */ SYSTRAP(__clone) /* Note: `fn' in (a1) is preserved */ lea 12(%sp),%sp /* Zap syscall args */ - jcs 3f /* Punt if syscall failed */ + JCS_CERROR /* Punt if syscall failed */ tstl %d0 jne 1f /* We're the parent, just return. */ jsr (%a1) /* We're the clone, call the function */ movl %d0,-(%sp) /* If clone returns, invoke _exit(3) */ - jbsr PIC_PLT(_C_LABEL(_exit)) + PIC_CALL(_C_LABEL(_exit)) /* NOTREACHED */ 1: rts 2: movl #EINVAL,%d0 -3: jbra CERROR +3: JBRA_CERROR + CERROR_TRAMP END(__clone) Index: src/lib/libc/arch/m68k/sys/__mmap.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/__mmap.S,v retrieving revision 1.3 diff -u -p -r1.3 __mmap.S --- src/lib/libc/arch/m68k/sys/__mmap.S 16 Jul 2013 22:19:37 -0000 1.3 +++ src/lib/libc/arch/m68k/sys/__mmap.S 25 Jan 2015 22:43:41 -0000 @@ -33,4 +33,5 @@ _SYSCALL(__mmap,mmap) movl %d0,%a0 #endif rts + CERROR_TRAMP END(__mmap) Index: src/lib/libc/arch/m68k/sys/__vfork14.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/__vfork14.S,v retrieving revision 1.12 diff -u -p -r1.12 __vfork14.S --- src/lib/libc/arch/m68k/sys/__vfork14.S 12 Sep 2013 15:36:15 -0000 1.12 +++ src/lib/libc/arch/m68k/sys/__vfork14.S 25 Jan 2015 22:43:41 -0000 @@ -71,7 +71,7 @@ err: .globl _C_LABEL(__errno) movl %a1,-(%sp) movl %d0,-(%sp) - jbsr PIC_PLT(_C_LABEL(__errno)) + PIC_CALL(_C_LABEL(__errno)) #ifdef __SVR4_ABI__ movl (%sp)+,(%a0) #else Index: src/lib/libc/arch/m68k/sys/_lwp_getprivate.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/_lwp_getprivate.S,v retrieving revision 1.3 diff -u -p -r1.3 _lwp_getprivate.S --- src/lib/libc/arch/m68k/sys/_lwp_getprivate.S 16 Jul 2013 22:19:16 -0000 1.3 +++ src/lib/libc/arch/m68k/sys/_lwp_getprivate.S 1 Feb 2015 10:00:46 -0000 @@ -33,4 +33,5 @@ SYSCALL(_lwp_getprivate) movl %d0,%a0 #endif rts + CERROR_TRAMP END(_lwp_getprivate) Index: src/lib/libc/arch/m68k/sys/brk.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/brk.S,v retrieving revision 1.19 diff -u -p -r1.19 brk.S --- src/lib/libc/arch/m68k/sys/brk.S 12 Sep 2013 15:36:15 -0000 1.19 +++ src/lib/libc/arch/m68k/sys/brk.S 25 Jan 2015 22:43:41 -0000 @@ -71,7 +71,7 @@ ENTRY(_brk) movl %a1,4(%sp) ok: SYSTRAP(break) - jcs CERROR + JCS_CERROR #ifdef __PIC__ LEA_LCL(_C_LABEL(__curbrk),%a0) movl %a1,(%a0) @@ -80,4 +80,5 @@ ok: #endif clrl %d0 rts + CERROR_TRAMP END(_brk) Index: src/lib/libc/arch/m68k/sys/cerror.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/cerror.S,v retrieving revision 1.18 diff -u -p -r1.18 cerror.S --- src/lib/libc/arch/m68k/sys/cerror.S 12 Sep 2013 15:36:15 -0000 1.18 +++ src/lib/libc/arch/m68k/sys/cerror.S 25 Jan 2015 22:43:41 -0000 @@ -51,7 +51,7 @@ _ENTRY(CERROR) #ifdef _REENTRANT movl %d0,-(%sp) - jbsr PIC_PLT(_C_LABEL(__errno)) + PIC_CALL(_C_LABEL(__errno)) #ifndef __SVR4_ABI__ movl %d0,%a0 #endif Index: src/lib/libc/arch/m68k/sys/exect.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/exect.S,v retrieving revision 1.8 diff -u -p -r1.8 exect.S --- src/lib/libc/arch/m68k/sys/exect.S 16 Jul 2013 22:20:35 -0000 1.8 +++ src/lib/libc/arch/m68k/sys/exect.S 1 Feb 2015 17:00:57 -0000 @@ -45,6 +45,6 @@ #endif /* LIBC_SCCS and not lint */ ENTRY(exect) - SYSTRAP(execve) - jbra CERROR /* exect(file, argv, env) */ + SYSTRAP(execve) /* exect(file, argv, env) */ + JBRA_CERROR END(exect) Index: src/lib/libc/arch/m68k/sys/fork.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/fork.S,v retrieving revision 1.8 diff -u -p -r1.8 fork.S --- src/lib/libc/arch/m68k/sys/fork.S 16 Jul 2013 22:15:55 -0000 1.8 +++ src/lib/libc/arch/m68k/sys/fork.S 25 Jan 2015 22:43:41 -0000 @@ -47,4 +47,5 @@ _SYSCALL(__fork,fork) subql #1,%d1 /* from 1 to 0 in child, 0 to -1 in parent */ andl %d1,%d0 rts /* pid = fork() */ + CERROR_TRAMP END(__fork) Index: src/lib/libc/arch/m68k/sys/getcontext.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/getcontext.S,v retrieving revision 1.6 diff -u -p -r1.6 getcontext.S --- src/lib/libc/arch/m68k/sys/getcontext.S 17 Jul 2013 03:01:27 -0000 1.6 +++ src/lib/libc/arch/m68k/sys/getcontext.S 25 Jan 2015 22:43:41 -0000 @@ -46,4 +46,5 @@ _SYSCALL(_getcontext,getcontext) movl %sp@,UC_MCONTEXT_PC(%a0)| adjust saved program counter clrl UC_MCONTEXT_D0(%a0) | arrange for return value of 0 rts + CERROR_TRAMP END(_getcontext) Index: src/lib/libc/arch/m68k/sys/mremap.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/mremap.S,v retrieving revision 1.3 diff -u -p -r1.3 mremap.S --- src/lib/libc/arch/m68k/sys/mremap.S 16 Jul 2013 22:15:55 -0000 1.3 +++ src/lib/libc/arch/m68k/sys/mremap.S 1 Feb 2015 10:01:49 -0000 @@ -33,4 +33,5 @@ SYSCALL(mremap) movl %d0,%a0 #endif rts + CERROR_TRAMP END(mremap) Index: src/lib/libc/arch/m68k/sys/pipe.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/pipe.S,v retrieving revision 1.8 diff -u -p -r1.8 pipe.S --- src/lib/libc/arch/m68k/sys/pipe.S 16 Jul 2013 22:16:53 -0000 1.8 +++ src/lib/libc/arch/m68k/sys/pipe.S 25 Jan 2015 22:43:41 -0000 @@ -53,4 +53,5 @@ _SYSCALL(_pipe,pipe) movl %d1,(%a0) clrl %d0 rts + CERROR_TRAMP END(_pipe) Index: src/lib/libc/arch/m68k/sys/ptrace.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/ptrace.S,v retrieving revision 1.15 diff -u -p -r1.15 ptrace.S --- src/lib/libc/arch/m68k/sys/ptrace.S 12 Sep 2013 15:36:15 -0000 1.15 +++ src/lib/libc/arch/m68k/sys/ptrace.S 25 Jan 2015 22:43:41 -0000 @@ -51,7 +51,7 @@ ENTRY(ptrace) #ifdef _REENTRANT - jbsr PIC_PLT(_C_LABEL(__errno)) + PIC_CALL(_C_LABEL(__errno)) #ifndef __SVR4_ABI__ movl %d0,%a0 #endif @@ -66,6 +66,7 @@ ENTRY(ptrace) #endif /* __PIC__ */ #endif /* _REENTRANT */ SYSTRAP(ptrace) - jcs CERROR + JCS_CERROR rts + CERROR_TRAMP END(ptrace) Index: src/lib/libc/arch/m68k/sys/sbrk.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/sbrk.S,v retrieving revision 1.17 diff -u -p -r1.17 sbrk.S --- src/lib/libc/arch/m68k/sys/sbrk.S 24 Jul 2013 15:38:07 -0000 1.17 +++ src/lib/libc/arch/m68k/sys/sbrk.S 25 Jan 2015 22:43:41 -0000 @@ -62,11 +62,12 @@ ENTRY(_sbrk) movl (%a1),%d0 addl %d0,4(%sp) SYSTRAP(break) - jcs CERROR + JCS_CERROR movl (%a1),%d0 movl 4(%sp),(%a1) #ifdef __SVR4_ABI__ movl %d0,%a0 #endif rts + CERROR_TRAMP END(_sbrk) Index: src/lib/libc/arch/m68k/sys/shmat.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/shmat.S,v retrieving revision 1.3 diff -u -p -r1.3 shmat.S --- src/lib/libc/arch/m68k/sys/shmat.S 16 Jul 2013 22:16:53 -0000 1.3 +++ src/lib/libc/arch/m68k/sys/shmat.S 25 Jan 2015 22:43:41 -0000 @@ -33,4 +33,5 @@ SYSCALL(shmat) movl %d0,%a0 #endif rts + CERROR_TRAMP END(shmat) Index: src/lib/libc/arch/m68k/sys/syscall.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/arch/m68k/sys/syscall.S,v retrieving revision 1.9 diff -u -p -r1.9 syscall.S --- src/lib/libc/arch/m68k/sys/syscall.S 24 Jul 2013 15:38:07 -0000 1.9 +++ src/lib/libc/arch/m68k/sys/syscall.S 25 Jan 2015 22:43:41 -0000 @@ -46,6 +46,7 @@ ENTRY(syscall) clrl %d0 trap #0 - jcs CERROR + JCS_CERROR rts + CERROR_TRAMP END(syscall) Index: src/lib/libc/compat/arch/m68k/gen/compat_setjmp.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/gen/compat_setjmp.S,v retrieving revision 1.3 diff -u -p -r1.3 compat_setjmp.S --- src/lib/libc/compat/arch/m68k/gen/compat_setjmp.S 4 Mar 2014 06:27:00 -0000 1.3 +++ src/lib/libc/compat/arch/m68k/gen/compat_setjmp.S 25 Jan 2015 22:43:41 -0000 @@ -58,10 +58,10 @@ ENTRY(setjmp) lea -12(%sp),%sp /* space for sigstack args/rvals */ clrl (%sp) /* don't change it... */ movl %sp,4(%sp) /* ...but return the current val */ - jbsr PIC_PLT(_C_LABEL(__sigaltstack14)) + PIC_CALL(_C_LABEL(__sigaltstack14)) /* note: flags returned in sp@(8) */ clrl (%sp) /* don't change mask, just return */ - jbsr PIC_PLT(_C_LABEL(sigblock)) /* old value */ + PIC_CALL(_C_LABEL(sigblock)) /* old value */ movl 8(%sp),%d1 /* old flags value */ andl #1,%d1 /* extract onstack flag */ lea 12(%sp),%sp @@ -92,6 +92,6 @@ ok: trap #1 /* finish via compat_13_sigreturn13() */ botch: - jbsr PIC_PLT(_C_LABEL(longjmperror)) + PIC_CALL(_C_LABEL(longjmperror)) stop #0 END(longjmp) Index: src/lib/libc/compat/arch/m68k/gen/compat_sigsetjmp.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/gen/compat_sigsetjmp.S,v retrieving revision 1.3 diff -u -p -r1.3 compat_sigsetjmp.S --- src/lib/libc/compat/arch/m68k/gen/compat_sigsetjmp.S 18 Mar 2014 18:20:37 -0000 1.3 +++ src/lib/libc/compat/arch/m68k/gen/compat_sigsetjmp.S 25 Jan 2015 22:43:41 -0000 @@ -63,9 +63,9 @@ ENTRY(sigsetjmp) movl %d1,(_JBLEN * 4)(%a0) /* save at end of area */ tstl %d1 bne dosig - jra PIC_PLT(_C_LABEL(_setjmp)) + PIC_JMP(_C_LABEL(_setjmp)) dosig: - jra PIC_PLT(_C_LABEL(setjmp)) + PIC_JMP(_C_LABEL(setjmp)) END(sigsetjmp) @@ -73,7 +73,7 @@ ENTRY(siglongjmp) movl 4(%sp),%a0 /* save area pointer */ tstl (_JBLEN * 4)(%a0) /* check mask... */ bne didsig - jra PIC_PLT(_C_LABEL(_longjmp)) + PIC_JMP(_C_LABEL(_longjmp)) didsig: - jra PIC_PLT(_C_LABEL(longjmp)) + PIC_JMP(_C_LABEL(longjmp)) END(siglongjmp) Index: src/lib/libc/compat/arch/m68k/sys/compat_Ovfork.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat_Ovfork.S,v retrieving revision 1.3 diff -u -p -r1.3 compat_Ovfork.S --- src/lib/libc/compat/arch/m68k/sys/compat_Ovfork.S 12 Sep 2013 15:36:16 -0000 1.3 +++ src/lib/libc/compat/arch/m68k/sys/compat_Ovfork.S 25 Jan 2015 22:43:41 -0000 @@ -74,7 +74,7 @@ err: .globl _C_LABEL(__errno) movl %a1,-(%sp) movl %d0,-(%sp) - jbsr PIC_PLT(_C_LABEL(__errno)) + PIC_CALL(_C_LABEL(__errno)) #ifdef __SVR4_ABI__ movl (%sp)+,(%a0) #else Index: src/lib/libc/compat/arch/m68k/sys/compat___sigreturn14.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat___sigreturn14.S,v retrieving revision 1.2 diff -u -p -r1.2 compat___sigreturn14.S --- src/lib/libc/compat/arch/m68k/sys/compat___sigreturn14.S 16 Jul 2013 23:00:15 -0000 1.2 +++ src/lib/libc/compat/arch/m68k/sys/compat___sigreturn14.S 1 Feb 2015 10:09:22 -0000 @@ -43,18 +43,8 @@ #endif #endif /* LIBC_SCCS and not lint */ -/* - * We must preserve the state of the registers as the user has set them up. - */ -#ifdef GPROF -#undef _PROF_PROLOG -#define _PROF_PROLOG \ - .data; 1: .long 0; \ - .text; INTERRUPT_SAVEREG; LEA_LCL(1b,%a0); jbsr MCOUNT_ENTRY; \ - INTERRUPT_RESTOREREG -#endif - -ENTRY(__sigreturn14) +ENTRY_NOPROFILE(__sigreturn14) trap #3 /* special sigreturn syscall entry point */ - jbra CERROR + JCS_CERROR + CERROR_TRAMP END(__sigreturn14) Index: src/lib/libc/compat/arch/m68k/sys/compat_sigpending.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat_sigpending.S,v retrieving revision 1.2 diff -u -p -r1.2 compat_sigpending.S --- src/lib/libc/compat/arch/m68k/sys/compat_sigpending.S 16 Jul 2013 23:00:15 -0000 1.2 +++ src/lib/libc/compat/arch/m68k/sys/compat_sigpending.S 25 Jan 2015 22:43:41 -0000 @@ -51,4 +51,5 @@ _SYSCALL(sigpending,compat_13_sigpending movl %d0,(%a0) clrl %d0 rts + CERROR_TRAMP END(sigpending) Index: src/lib/libc/compat/arch/m68k/sys/compat_sigprocmask.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat_sigprocmask.S,v retrieving revision 1.4 diff -u -p -r1.4 compat_sigprocmask.S --- src/lib/libc/compat/arch/m68k/sys/compat_sigprocmask.S 25 Jul 2013 22:08:15 -0000 1.4 +++ src/lib/libc/compat/arch/m68k/sys/compat_sigprocmask.S 25 Jan 2015 22:43:41 -0000 @@ -58,7 +58,7 @@ gotptr: movl (%a0),8(%sp) /* indirect to new mask arg */ doit: SYSTRAP(compat_13_sigprocmask13) - jcs CERROR + JCS_CERROR tstl 12(%sp) /* test if old mask requested */ jeq out movl 12(%sp),%a0 @@ -66,4 +66,5 @@ doit: out: clrl %d0 rts + CERROR_TRAMP END(sigprocmask) Index: src/lib/libc/compat/arch/m68k/sys/compat_sigreturn.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat_sigreturn.S,v retrieving revision 1.2 diff -u -p -r1.2 compat_sigreturn.S --- src/lib/libc/compat/arch/m68k/sys/compat_sigreturn.S 16 Jul 2013 23:00:15 -0000 1.2 +++ src/lib/libc/compat/arch/m68k/sys/compat_sigreturn.S 1 Feb 2015 10:08:42 -0000 @@ -43,24 +43,14 @@ #endif #endif /* LIBC_SCCS and not lint */ -/* - * We must preserve the state of the registers as the user has set them up. - */ -#ifdef GPROF -#undef _PROF_PROLOG -#define _PROF_PROLOG \ - .data; 1: .long 0; \ - .text; INTERRUPT_SAVEREG; LEA_LCL(1b,%a0); jbsr MCOUNT_ENTRY; \ - INTERRUPT_RESTOREREG -#endif /* GPROF */ - WARN_REFERENCES(sigreturn, \ "warning: reference to compatibility sigreturn()") /* * NOTE: Trap #1 is used for compat_13_sigreturn13 on the m68k! */ -ENTRY(sigreturn) +ENTRY_NOPROFILE(sigreturn) trap #1 /* signals compat_13_sigreturn13() */ - jbra CERROR + JBRA_CERROR + CERROR_TRAMP END(sigreturn) Index: src/lib/libc/compat/arch/m68k/sys/compat_sigsuspend.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compat/arch/m68k/sys/compat_sigsuspend.S,v retrieving revision 1.3 diff -u -p -r1.3 compat_sigsuspend.S --- src/lib/libc/compat/arch/m68k/sys/compat_sigsuspend.S 25 Jul 2013 22:08:15 -0000 1.3 +++ src/lib/libc/compat/arch/m68k/sys/compat_sigsuspend.S 25 Jan 2015 22:43:41 -0000 @@ -50,7 +50,8 @@ ENTRY(sigsuspend) movl 4(%sp),%a0 movl (%a0),4(%sp) /* indirect to mask arg */ SYSTRAP(compat_13_sigsuspend13) - jcs CERROR + JCS_CERROR clrl %d0 /* shouldn't happen */ rts + CERROR_TRAMP END(sigsuspend) Index: src/lib/libc/compiler_rt/Makefile.inc =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/compiler_rt/Makefile.inc,v retrieving revision 1.27 diff -u -p -r1.27 Makefile.inc --- src/lib/libc/compiler_rt/Makefile.inc 3 Sep 2014 19:29:14 -0000 1.27 +++ src/lib/libc/compiler_rt/Makefile.inc 25 Jan 2015 22:43:41 -0000 @@ -100,8 +100,6 @@ GENERIC_SRCS+= \ multi3.c \ mulvsi3.c \ mulvti3.c \ - negdf2.c \ - negsf2.c \ negti2.c \ negvsi2.c \ negvti2.c \ Index: src/lib/libc/gmon/gmon.c =================================================================== RCS file: /home/chs/netbsd/cvs/src/lib/libc/gmon/gmon.c,v retrieving revision 1.35 diff -u -p -r1.35 gmon.c --- src/lib/libc/gmon/gmon.c 18 Sep 2014 13:58:20 -0000 1.35 +++ src/lib/libc/gmon/gmon.c 25 Jan 2015 22:43:41 -0000 @@ -160,7 +160,7 @@ monstartup(u_long lowpc, u_long highpc) o = p->highpc - p->lowpc; if (p->kcountsize < o) { -#ifndef notdef +#ifndef __mc68010__ s_scale = ((float)p->kcountsize / o ) * SCALE_1_TO_1; #else /* avoid floating point */ u_long quot = o / p->kcountsize; Index: src/libexec/ld.elf_so/Makefile =================================================================== RCS file: /home/chs/netbsd/cvs/src/libexec/ld.elf_so/Makefile,v retrieving revision 1.129 diff -u -p -r1.129 Makefile --- src/libexec/ld.elf_so/Makefile 19 Sep 2014 17:43:33 -0000 1.129 +++ src/libexec/ld.elf_so/Makefile 25 Jan 2015 22:43:41 -0000 @@ -26,23 +26,7 @@ ARCHSUBDIR= ${MACHINE_CPU} .endif M= ${.CURDIR}/arch/${ARCHSUBDIR} -.if ((${MACHINE_CPU} == "aarch64") || \ - (${LDELFSO_MACHINE_ARCH} == "alpha") || \ - (${MACHINE_CPU} == "arm") || \ - (${LDELFSO_MACHINE_ARCH} == "coldfire") || \ - (${LDELFSO_MACHINE_ARCH} == "hppa") || \ - (${LDELFSO_MACHINE_ARCH} == "i386") || \ - (${LDELFSO_MACHINE_ARCH} == "m68k") || \ - (${MACHINE_CPU} == "mips") || \ - (${MACHINE_CPU} == "or1k") || \ - (${MACHINE_CPU} == "powerpc") || \ - (${MACHINE_CPU} == "riscv") || \ - (${MACHINE_CPU} == "sh3") || \ - (${LDELFSO_MACHINE_ARCH} == "sparc") || \ - (${LDELFSO_MACHINE_ARCH} == "sparc64") || \ - (${LDELFSO_MACHINE_ARCH} == "x86_64") || \ - (${LDELFSO_MACHINE_ARCH} == "vax")) && \ - ${MKPIC} != "no" +.if ${MKPIC} != "no" LDFLAGS+= ${${ACTIVE_CC} == "clang":? -Wl,-Bsymbolic : -symbolic} \ -shared -nostartfiles -nodefaultlibs Index: src/libexec/ld.elf_so/arch/m68k/Makefile.inc =================================================================== RCS file: /home/chs/netbsd/cvs/src/libexec/ld.elf_so/arch/m68k/Makefile.inc,v retrieving revision 1.10 diff -u -p -r1.10 Makefile.inc --- src/libexec/ld.elf_so/arch/m68k/Makefile.inc 4 Jun 2005 16:17:17 -0000 1.10 +++ src/libexec/ld.elf_so/arch/m68k/Makefile.inc 25 Jan 2015 22:43:41 -0000 @@ -3,7 +3,7 @@ SRCS+= rtld_start.S mdreloc.c # XXX Should not be in CPPFLAGS! -CPPFLAGS+= -fpic +CPPFLAGS+= -fPIC CPPFLAGS+= -DELFSIZE=32 Index: src/libexec/ld.elf_so/arch/m68k/rtld_start.S =================================================================== RCS file: /home/chs/netbsd/cvs/src/libexec/ld.elf_so/arch/m68k/rtld_start.S,v retrieving revision 1.11 diff -u -p -r1.11 rtld_start.S --- src/libexec/ld.elf_so/arch/m68k/rtld_start.S 18 Mar 2014 18:20:38 -0000 1.11 +++ src/libexec/ld.elf_so/arch/m68k/rtld_start.S 1 Feb 2015 17:12:04 -0000 @@ -31,11 +31,7 @@ #include - .text - .align 4 - .globl .rtld_start - .type .rtld_start,@function -.rtld_start: +ENTRY_NOPROFILE(.rtld_start) subql #8,%sp | storage for obj and cleanup GOT_SETUP(%a0) @@ -46,28 +42,25 @@ movel %a5,-(%sp) | relocbase movel %a1,-(%sp) | &_DYNAMIC - jbsr _rtld_relocate_nonplt_self@PLTPC + PIC_CALL(_rtld_relocate_nonplt_self) addql #8,%sp | pop arguments movel %a5,-(%sp) | relocbase pea 4(%sp) | sp - jbsr _rtld@PLTPC | entry = _rtld(sp, relocbase) + PIC_CALL(_rtld) | entry = _rtld(sp, relocbase) addql #8,%sp | pop arguments moveal (%sp)+,%a1 | cleanup moveal (%sp)+,%a0 | obj moveal %d0,%a3 jmp (%a3) | Go for it! - .size .rtld_start,.-.rtld_start +END(.rtld_start) - .align 4 - .globl _rtld_bind_start - .type _rtld_bind_start,@function -_rtld_bind_start: +ENTRY_NOPROFILE(_rtld_bind_start) INTERRUPT_SAVEREG movel 20(%sp),-(%sp) | push reloff movel (16+4)(%sp),-(%sp) | push obj - jbsr _rtld_bind@PLTPC | %a0 = _rtld_bind(obj, reloff) + PIC_CALL(_rtld_bind) | %a0 = _rtld_bind(obj, reloff) addql #8,%sp | pop args #ifdef __SVR4_ABI__ movel %a0,(16+4)(%sp) | write fake `return' address over obj @@ -77,4 +70,4 @@ _rtld_bind_start: INTERRUPT_RESTOREREG | restore caller-saved registers addql #4,%sp | skip reloff rts | `return' right into function - .size _rtld_bind_start,.-_rtld_bind_start +END(_rtld_bind_start) Index: src/share/mk/bsd.own.mk =================================================================== RCS file: /home/chs/netbsd/cvs/src/share/mk/bsd.own.mk,v retrieving revision 1.842 diff -u -p -r1.842 bsd.own.mk --- src/share/mk/bsd.own.mk 23 Jan 2015 03:43:24 -0000 1.842 +++ src/share/mk/bsd.own.mk 1 Feb 2015 17:13:23 -0000 @@ -729,19 +729,6 @@ MKPROFILE.riscv32=no MKPROFILE.riscv64=no # -# The m68000 port is incomplete. -# -.if ${MACHINE_ARCH} == "m68000" -NOPIC= # defined -MKISCSI= no -# XXX GCC 4 outputs mcount() calling sequences that try to load values -# from over 64KB away and this fails to assemble. -.if defined(HAVE_GCC) -NOPROFILE= # defined -.endif -.endif - -# # The ia64 port is incomplete. # MKLINT.ia64= no Index: src/sys/arch/m68k/include/asm.h =================================================================== RCS file: /home/chs/netbsd/cvs/src/sys/arch/m68k/include/asm.h,v retrieving revision 1.33 diff -u -p -r1.33 asm.h --- src/sys/arch/m68k/include/asm.h 12 Sep 2013 15:36:17 -0000 1.33 +++ src/sys/arch/m68k/include/asm.h 25 Jan 2015 22:43:41 -0000 @@ -77,21 +77,43 @@ #ifdef __PIC__ #define PIC_PLT(name) name@PLTPC -#ifdef __mcoldfire__ +#if defined(__mcoldfire__) || defined(__mc68010__) #define LEA_LCL(name,reg) \ movl __IMMEDIATE name - .,reg ; \ - lea (-6,%pc,reg),reg + lea (-8,%pc,reg),reg #define GOT_SETUP(reg) \ movl __IMMEDIATE _GLOBAL_OFFSET_TABLE_@GOTPC,reg ; \ lea (-6,%pc,reg),reg +#define PIC_PLTADDR(name,reg) \ + movl __IMMEDIATE PIC_PLT(name),reg ; \ + lea (-6,%pc,reg),reg +#ifdef __mc68010__ +#define PIC_CALL_REG(name,reg) \ + PIC_PLTADDR(name,reg) ; \ + jsr (reg) +#define PIC_JMP_REG(name,reg) \ + PIC_PLTADDR(name,reg) ; \ + jmp (reg) +#define PIC_CALL(name) \ + PIC_CALL_REG(name,%a0) +#define PIC_JMP(name) \ + PIC_JMP_REG(name,%a0) +#else +#define PIC_CALL(name) jbsr PIC_PLT(name) +#define PIC_JMP(name) jra PIC_PLT(name) +#endif #else #define LEA_LCL(name,reg) lea (name,%pc),reg #define GOT_SETUP(reg) lea (_GLOBAL_OFFSET_TABLE_@GOTPC,%pc),reg +#define PIC_CALL(name) jbsr PIC_PLT(name) +#define PIC_JMP(name) jra PIC_PLT(name) #endif #else #define PIC_PLT(name) name #define LEA_LCL(name,reg) movl __IMMEDIATE name,reg #define GOT_SETUP(reg) /* nothing */ +#define PIC_CALL(name) jbsr name +#define PIC_JMP(name) jra name #endif #if __STDC__ Index: src/tests/libexec/Makefile =================================================================== RCS file: /home/chs/netbsd/cvs/src/tests/libexec/Makefile,v retrieving revision 1.4 diff -u -p -r1.4 Makefile --- src/tests/libexec/Makefile 10 Jun 2014 04:28:39 -0000 1.4 +++ src/tests/libexec/Makefile 25 Jan 2015 22:43:41 -0000 @@ -3,9 +3,7 @@ .include "Makefile.inc" .include -.if ${MACHINE_ARCH} != "m68000" TESTS_SUBDIRS= ld.elf_so -.endif TESTSDIR= ${TESTSBASE}/libexec Index: src/tools/gcc/Makefile =================================================================== RCS file: /home/chs/netbsd/cvs/src/tools/gcc/Makefile,v retrieving revision 1.74 diff -u -p -r1.74 Makefile --- src/tools/gcc/Makefile 16 Jan 2015 20:10:26 -0000 1.74 +++ src/tools/gcc/Makefile 25 Jan 2015 22:43:41 -0000 @@ -181,10 +181,6 @@ NATIVE_CONFIGURE_ARGS+= --enable-tls NATIVE_CONFIGURE_ARGS+= --enable-initfini-array .endif -.if ${MACHINE_ARCH} == "m68000" -NATIVE_CONFIGURE_ARGS+= --disable-shared -.endif - NATIVE_CONFIGURE_ARGS+= \ --disable-multilib \ --disable-symvers \ Index: src/tools/gcc/mknative-gcc =================================================================== RCS file: /home/chs/netbsd/cvs/src/tools/gcc/mknative-gcc,v retrieving revision 1.81 diff -u -p -r1.81 mknative-gcc --- src/tools/gcc/mknative-gcc 31 Jan 2015 08:50:01 -0000 1.81 +++ src/tools/gcc/mknative-gcc 31 Jan 2015 09:55:17 -0000 @@ -97,14 +97,6 @@ get_libgcc () { } | sanitise_includes \ | write_mk $_OUTDIRBASE/lib/lib$_subdir/arch/$MACHINE_ARCH/defs.mk - if [ "${MACHINE_ARCH}" = "m68000" ] - then - ex <<__EOF__ $_OUTDIR/lib/lib$_subdir/arch/$MACHINE_ARCH/defs.mk -/G_LIBGCC2_CFLAGS/ s/-fPIC// -wq -__EOF__ - fi - for f in auto-target.h; do write_c $_OUTDIRBASE/lib/lib$_subdir/arch/$MACHINE_ARCH/$f \ <$_TMPDIR/$_PLATFORM/libgcc/$f