Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'm68k-for-v6.3-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k

Pull m68k updates from Geert Uytterhoeven:

- Add seccomp support

- defconfig updates

- Miscellaneous fixes and improvements

* tag 'm68k-for-v6.3-tag1' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
m68k: /proc/hardware should depend on PROC_FS
selftests/seccomp: Add m68k support
m68k: Add kernel seccomp support
m68k: Check syscall_trace_enter() return code
m68k: defconfig: Update defconfigs for v6.2-rc3
m68k: q40: Do not initialise statics to 0

+99 -41
+1 -1
Documentation/features/seccomp/seccomp-filter/arch-support.txt
··· 14 14 | hexagon: | TODO | 15 15 | ia64: | TODO | 16 16 | loongarch: | ok | 17 - | m68k: | TODO | 17 + | m68k: | ok | 18 18 | microblaze: | TODO | 19 19 | mips: | ok | 20 20 | nios2: | TODO |
+2
arch/m68k/68000/entry.S
··· 45 45 jbsr syscall_trace_enter 46 46 RESTORE_SWITCH_STACK 47 47 addql #4,%sp 48 + addql #1,%d0 49 + jeq ret_from_exception 48 50 movel %sp@(PT_OFF_ORIG_D0),%d1 49 51 movel #-ENOSYS,%d0 50 52 cmpl #NR_syscalls,%d1
+2
arch/m68k/Kconfig
··· 18 18 select GENERIC_CPU_DEVICES 19 19 select GENERIC_IOMAP 20 20 select GENERIC_IRQ_SHOW 21 + select HAVE_ARCH_SECCOMP 22 + select HAVE_ARCH_SECCOMP_FILTER 21 23 select HAVE_ASM_MODVERSIONS 22 24 select HAVE_DEBUG_BUGVERBOSE 23 25 select HAVE_EFFICIENT_UNALIGNED_ACCESS if !CPU_HAS_NO_UNALIGNED
+1
arch/m68k/Kconfig.devices
··· 19 19 # We have a dedicated heartbeat LED. :-) 20 20 config PROC_HARDWARE 21 21 bool "/proc/hardware support" 22 + depends on PROC_FS 22 23 help 23 24 Say Y here to support the /proc/hardware file, which gives you 24 25 access to information about the machine you're running on,
+2
arch/m68k/coldfire/entry.S
··· 90 90 jbsr syscall_trace_enter 91 91 RESTORE_SWITCH_STACK 92 92 addql #4,%sp 93 + addql #1,%d0 94 + jeq ret_from_exception 93 95 movel %d3,%a0 94 96 jbsr %a0@ 95 97 movel %d0,%sp@(PT_OFF_D0) /* save the return value */
-3
arch/m68k/configs/amiga_defconfig
··· 108 108 CONFIG_NFT_REDIR=m 109 109 CONFIG_NFT_NAT=m 110 110 CONFIG_NFT_TUNNEL=m 111 - CONFIG_NFT_OBJREF=m 112 111 CONFIG_NFT_QUEUE=m 113 112 CONFIG_NFT_QUOTA=m 114 113 CONFIG_NFT_REJECT=m ··· 629 630 CONFIG_TEST_HEXDUMP=m 630 631 CONFIG_STRING_SELFTEST=m 631 632 CONFIG_TEST_STRING_HELPERS=m 632 - CONFIG_TEST_STRSCPY=m 633 633 CONFIG_TEST_KSTRTOX=m 634 634 CONFIG_TEST_PRINTF=m 635 635 CONFIG_TEST_SCANF=m ··· 636 638 CONFIG_TEST_UUID=m 637 639 CONFIG_TEST_XARRAY=m 638 640 CONFIG_TEST_RHASHTABLE=m 639 - CONFIG_TEST_SIPHASH=m 640 641 CONFIG_TEST_IDA=m 641 642 CONFIG_TEST_BITOPS=m 642 643 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/apollo_defconfig
··· 104 104 CONFIG_NFT_REDIR=m 105 105 CONFIG_NFT_NAT=m 106 106 CONFIG_NFT_TUNNEL=m 107 - CONFIG_NFT_OBJREF=m 108 107 CONFIG_NFT_QUEUE=m 109 108 CONFIG_NFT_QUOTA=m 110 109 CONFIG_NFT_REJECT=m ··· 585 586 CONFIG_TEST_HEXDUMP=m 586 587 CONFIG_STRING_SELFTEST=m 587 588 CONFIG_TEST_STRING_HELPERS=m 588 - CONFIG_TEST_STRSCPY=m 589 589 CONFIG_TEST_KSTRTOX=m 590 590 CONFIG_TEST_PRINTF=m 591 591 CONFIG_TEST_SCANF=m ··· 592 594 CONFIG_TEST_UUID=m 593 595 CONFIG_TEST_XARRAY=m 594 596 CONFIG_TEST_RHASHTABLE=m 595 - CONFIG_TEST_SIPHASH=m 596 597 CONFIG_TEST_IDA=m 597 598 CONFIG_TEST_BITOPS=m 598 599 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/atari_defconfig
··· 111 111 CONFIG_NFT_REDIR=m 112 112 CONFIG_NFT_NAT=m 113 113 CONFIG_NFT_TUNNEL=m 114 - CONFIG_NFT_OBJREF=m 115 114 CONFIG_NFT_QUEUE=m 116 115 CONFIG_NFT_QUOTA=m 117 116 CONFIG_NFT_REJECT=m ··· 606 607 CONFIG_TEST_HEXDUMP=m 607 608 CONFIG_STRING_SELFTEST=m 608 609 CONFIG_TEST_STRING_HELPERS=m 609 - CONFIG_TEST_STRSCPY=m 610 610 CONFIG_TEST_KSTRTOX=m 611 611 CONFIG_TEST_PRINTF=m 612 612 CONFIG_TEST_SCANF=m ··· 613 615 CONFIG_TEST_UUID=m 614 616 CONFIG_TEST_XARRAY=m 615 617 CONFIG_TEST_RHASHTABLE=m 616 - CONFIG_TEST_SIPHASH=m 617 618 CONFIG_TEST_IDA=m 618 619 CONFIG_TEST_BITOPS=m 619 620 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/bvme6000_defconfig
··· 101 101 CONFIG_NFT_REDIR=m 102 102 CONFIG_NFT_NAT=m 103 103 CONFIG_NFT_TUNNEL=m 104 - CONFIG_NFT_OBJREF=m 105 104 CONFIG_NFT_QUEUE=m 106 105 CONFIG_NFT_QUOTA=m 107 106 CONFIG_NFT_REJECT=m ··· 577 578 CONFIG_TEST_HEXDUMP=m 578 579 CONFIG_STRING_SELFTEST=m 579 580 CONFIG_TEST_STRING_HELPERS=m 580 - CONFIG_TEST_STRSCPY=m 581 581 CONFIG_TEST_KSTRTOX=m 582 582 CONFIG_TEST_PRINTF=m 583 583 CONFIG_TEST_SCANF=m ··· 584 586 CONFIG_TEST_UUID=m 585 587 CONFIG_TEST_XARRAY=m 586 588 CONFIG_TEST_RHASHTABLE=m 587 - CONFIG_TEST_SIPHASH=m 588 589 CONFIG_TEST_IDA=m 589 590 CONFIG_TEST_BITOPS=m 590 591 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/hp300_defconfig
··· 103 103 CONFIG_NFT_REDIR=m 104 104 CONFIG_NFT_NAT=m 105 105 CONFIG_NFT_TUNNEL=m 106 - CONFIG_NFT_OBJREF=m 107 106 CONFIG_NFT_QUEUE=m 108 107 CONFIG_NFT_QUOTA=m 109 108 CONFIG_NFT_REJECT=m ··· 587 588 CONFIG_TEST_HEXDUMP=m 588 589 CONFIG_STRING_SELFTEST=m 589 590 CONFIG_TEST_STRING_HELPERS=m 590 - CONFIG_TEST_STRSCPY=m 591 591 CONFIG_TEST_KSTRTOX=m 592 592 CONFIG_TEST_PRINTF=m 593 593 CONFIG_TEST_SCANF=m ··· 594 596 CONFIG_TEST_UUID=m 595 597 CONFIG_TEST_XARRAY=m 596 598 CONFIG_TEST_RHASHTABLE=m 597 - CONFIG_TEST_SIPHASH=m 598 599 CONFIG_TEST_IDA=m 599 600 CONFIG_TEST_BITOPS=m 600 601 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/mac_defconfig
··· 102 102 CONFIG_NFT_REDIR=m 103 103 CONFIG_NFT_NAT=m 104 104 CONFIG_NFT_TUNNEL=m 105 - CONFIG_NFT_OBJREF=m 106 105 CONFIG_NFT_QUEUE=m 107 106 CONFIG_NFT_QUOTA=m 108 107 CONFIG_NFT_REJECT=m ··· 608 609 CONFIG_TEST_HEXDUMP=m 609 610 CONFIG_STRING_SELFTEST=m 610 611 CONFIG_TEST_STRING_HELPERS=m 611 - CONFIG_TEST_STRSCPY=m 612 612 CONFIG_TEST_KSTRTOX=m 613 613 CONFIG_TEST_PRINTF=m 614 614 CONFIG_TEST_SCANF=m ··· 615 617 CONFIG_TEST_UUID=m 616 618 CONFIG_TEST_XARRAY=m 617 619 CONFIG_TEST_RHASHTABLE=m 618 - CONFIG_TEST_SIPHASH=m 619 620 CONFIG_TEST_IDA=m 620 621 CONFIG_TEST_BITOPS=m 621 622 CONFIG_TEST_VMALLOC=m
+1 -3
arch/m68k/configs/multi_defconfig
··· 122 122 CONFIG_NFT_REDIR=m 123 123 CONFIG_NFT_NAT=m 124 124 CONFIG_NFT_TUNNEL=m 125 - CONFIG_NFT_OBJREF=m 126 125 CONFIG_NFT_QUEUE=m 127 126 CONFIG_NFT_QUOTA=m 128 127 CONFIG_NFT_REJECT=m ··· 314 315 # CONFIG_WIRELESS is not set 315 316 CONFIG_PSAMPLE=m 316 317 CONFIG_NET_IFE=m 318 + CONFIG_PCCARD=y 317 319 CONFIG_DEVTMPFS=y 318 320 CONFIG_DEVTMPFS_MOUNT=y 319 321 CONFIG_TEST_ASYNC_DRIVER_PROBE=m ··· 695 695 CONFIG_TEST_HEXDUMP=m 696 696 CONFIG_STRING_SELFTEST=m 697 697 CONFIG_TEST_STRING_HELPERS=m 698 - CONFIG_TEST_STRSCPY=m 699 698 CONFIG_TEST_KSTRTOX=m 700 699 CONFIG_TEST_PRINTF=m 701 700 CONFIG_TEST_SCANF=m ··· 702 703 CONFIG_TEST_UUID=m 703 704 CONFIG_TEST_XARRAY=m 704 705 CONFIG_TEST_RHASHTABLE=m 705 - CONFIG_TEST_SIPHASH=m 706 706 CONFIG_TEST_IDA=m 707 707 CONFIG_TEST_BITOPS=m 708 708 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/mvme147_defconfig
··· 100 100 CONFIG_NFT_REDIR=m 101 101 CONFIG_NFT_NAT=m 102 102 CONFIG_NFT_TUNNEL=m 103 - CONFIG_NFT_OBJREF=m 104 103 CONFIG_NFT_QUEUE=m 105 104 CONFIG_NFT_QUOTA=m 106 105 CONFIG_NFT_REJECT=m ··· 576 577 CONFIG_TEST_HEXDUMP=m 577 578 CONFIG_STRING_SELFTEST=m 578 579 CONFIG_TEST_STRING_HELPERS=m 579 - CONFIG_TEST_STRSCPY=m 580 580 CONFIG_TEST_KSTRTOX=m 581 581 CONFIG_TEST_PRINTF=m 582 582 CONFIG_TEST_SCANF=m ··· 583 585 CONFIG_TEST_UUID=m 584 586 CONFIG_TEST_XARRAY=m 585 587 CONFIG_TEST_RHASHTABLE=m 586 - CONFIG_TEST_SIPHASH=m 587 588 CONFIG_TEST_IDA=m 588 589 CONFIG_TEST_BITOPS=m 589 590 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/mvme16x_defconfig
··· 101 101 CONFIG_NFT_REDIR=m 102 102 CONFIG_NFT_NAT=m 103 103 CONFIG_NFT_TUNNEL=m 104 - CONFIG_NFT_OBJREF=m 105 104 CONFIG_NFT_QUEUE=m 106 105 CONFIG_NFT_QUOTA=m 107 106 CONFIG_NFT_REJECT=m ··· 577 578 CONFIG_TEST_HEXDUMP=m 578 579 CONFIG_STRING_SELFTEST=m 579 580 CONFIG_TEST_STRING_HELPERS=m 580 - CONFIG_TEST_STRSCPY=m 581 581 CONFIG_TEST_KSTRTOX=m 582 582 CONFIG_TEST_PRINTF=m 583 583 CONFIG_TEST_SCANF=m ··· 584 586 CONFIG_TEST_UUID=m 585 587 CONFIG_TEST_XARRAY=m 586 588 CONFIG_TEST_RHASHTABLE=m 587 - CONFIG_TEST_SIPHASH=m 588 589 CONFIG_TEST_IDA=m 589 590 CONFIG_TEST_BITOPS=m 590 591 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/q40_defconfig
··· 102 102 CONFIG_NFT_REDIR=m 103 103 CONFIG_NFT_NAT=m 104 104 CONFIG_NFT_TUNNEL=m 105 - CONFIG_NFT_OBJREF=m 106 105 CONFIG_NFT_QUEUE=m 107 106 CONFIG_NFT_QUOTA=m 108 107 CONFIG_NFT_REJECT=m ··· 595 596 CONFIG_TEST_HEXDUMP=m 596 597 CONFIG_STRING_SELFTEST=m 597 598 CONFIG_TEST_STRING_HELPERS=m 598 - CONFIG_TEST_STRSCPY=m 599 599 CONFIG_TEST_KSTRTOX=m 600 600 CONFIG_TEST_PRINTF=m 601 601 CONFIG_TEST_SCANF=m ··· 602 604 CONFIG_TEST_UUID=m 603 605 CONFIG_TEST_XARRAY=m 604 606 CONFIG_TEST_RHASHTABLE=m 605 - CONFIG_TEST_SIPHASH=m 606 607 CONFIG_TEST_IDA=m 607 608 CONFIG_TEST_BITOPS=m 608 609 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/sun3_defconfig
··· 98 98 CONFIG_NFT_REDIR=m 99 99 CONFIG_NFT_NAT=m 100 100 CONFIG_NFT_TUNNEL=m 101 - CONFIG_NFT_OBJREF=m 102 101 CONFIG_NFT_QUEUE=m 103 102 CONFIG_NFT_QUOTA=m 104 103 CONFIG_NFT_REJECT=m ··· 575 576 CONFIG_TEST_HEXDUMP=m 576 577 CONFIG_STRING_SELFTEST=m 577 578 CONFIG_TEST_STRING_HELPERS=m 578 - CONFIG_TEST_STRSCPY=m 579 579 CONFIG_TEST_KSTRTOX=m 580 580 CONFIG_TEST_PRINTF=m 581 581 CONFIG_TEST_SCANF=m ··· 582 584 CONFIG_TEST_UUID=m 583 585 CONFIG_TEST_XARRAY=m 584 586 CONFIG_TEST_RHASHTABLE=m 585 - CONFIG_TEST_SIPHASH=m 586 587 CONFIG_TEST_IDA=m 587 588 CONFIG_TEST_BITOPS=m 588 589 CONFIG_TEST_VMALLOC=m
-3
arch/m68k/configs/sun3x_defconfig
··· 98 98 CONFIG_NFT_REDIR=m 99 99 CONFIG_NFT_NAT=m 100 100 CONFIG_NFT_TUNNEL=m 101 - CONFIG_NFT_OBJREF=m 102 101 CONFIG_NFT_QUEUE=m 103 102 CONFIG_NFT_QUOTA=m 104 103 CONFIG_NFT_REJECT=m ··· 575 576 CONFIG_TEST_HEXDUMP=m 576 577 CONFIG_STRING_SELFTEST=m 577 578 CONFIG_TEST_STRING_HELPERS=m 578 - CONFIG_TEST_STRSCPY=m 579 579 CONFIG_TEST_KSTRTOX=m 580 580 CONFIG_TEST_PRINTF=m 581 581 CONFIG_TEST_SCANF=m ··· 582 584 CONFIG_TEST_UUID=m 583 585 CONFIG_TEST_XARRAY=m 584 586 CONFIG_TEST_RHASHTABLE=m 585 - CONFIG_TEST_SIPHASH=m 586 587 CONFIG_TEST_IDA=m 587 588 CONFIG_TEST_BITOPS=m 588 589 CONFIG_TEST_VMALLOC=m
+11
arch/m68k/include/asm/seccomp.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + #ifndef _ASM_SECCOMP_H 3 + #define _ASM_SECCOMP_H 4 + 5 + #include <asm-generic/seccomp.h> 6 + 7 + #define SECCOMP_ARCH_NATIVE AUDIT_ARCH_M68K 8 + #define SECCOMP_ARCH_NATIVE_NR NR_syscalls 9 + #define SECCOMP_ARCH_NATIVE_NAME "m68k" 10 + 11 + #endif /* _ASM_SECCOMP_H */
+57
arch/m68k/include/asm/syscall.h
··· 4 4 5 5 #include <uapi/linux/audit.h> 6 6 7 + #include <asm/unistd.h> 8 + 9 + extern const unsigned long sys_call_table[]; 10 + 11 + static inline int syscall_get_nr(struct task_struct *task, 12 + struct pt_regs *regs) 13 + { 14 + return regs->orig_d0; 15 + } 16 + 17 + static inline void syscall_rollback(struct task_struct *task, 18 + struct pt_regs *regs) 19 + { 20 + regs->d0 = regs->orig_d0; 21 + } 22 + 23 + static inline long syscall_get_error(struct task_struct *task, 24 + struct pt_regs *regs) 25 + { 26 + unsigned long error = regs->d0; 27 + 28 + return IS_ERR_VALUE(error) ? error : 0; 29 + } 30 + 31 + static inline long syscall_get_return_value(struct task_struct *task, 32 + struct pt_regs *regs) 33 + { 34 + return regs->d0; 35 + } 36 + 37 + static inline void syscall_set_return_value(struct task_struct *task, 38 + struct pt_regs *regs, 39 + int error, long val) 40 + { 41 + regs->d0 = (long)error ?: val; 42 + } 43 + 44 + static inline void syscall_get_arguments(struct task_struct *task, 45 + struct pt_regs *regs, 46 + unsigned long *args) 47 + { 48 + args[0] = regs->orig_d0; 49 + args++; 50 + 51 + memcpy(args, &regs->d1, 5 * sizeof(args[0])); 52 + } 53 + 54 + static inline void syscall_set_arguments(struct task_struct *task, 55 + struct pt_regs *regs, 56 + unsigned long *args) 57 + { 58 + regs->orig_d0 = args[0]; 59 + args++; 60 + 61 + memcpy(&regs->d1, args, 5 * sizeof(args[0])); 62 + } 63 + 7 64 static inline int syscall_get_arch(struct task_struct *task) 8 65 { 9 66 return AUDIT_ARCH_M68K;
+2
arch/m68k/include/asm/thread_info.h
··· 61 61 #define TIF_NOTIFY_RESUME 5 /* callback before returning to user */ 62 62 #define TIF_SIGPENDING 6 /* signal pending */ 63 63 #define TIF_NEED_RESCHED 7 /* rescheduling necessary */ 64 + #define TIF_SECCOMP 13 /* seccomp syscall filtering active */ 64 65 #define TIF_DELAYED_TRACE 14 /* single step a syscall */ 65 66 #define TIF_SYSCALL_TRACE 15 /* syscall trace active */ 66 67 #define TIF_MEMDIE 16 /* is terminating due to OOM killer */ ··· 70 69 #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME) 71 70 #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) 72 71 #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) 72 + #define _TIF_SECCOMP (1 << TIF_SECCOMP) 73 73 #define _TIF_DELAYED_TRACE (1 << TIF_DELAYED_TRACE) 74 74 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE) 75 75 #define _TIF_MEMDIE (1 << TIF_MEMDIE)
+6
arch/m68k/kernel/entry.S
··· 184 184 jbsr syscall_trace_enter 185 185 RESTORE_SWITCH_STACK 186 186 addql #4,%sp 187 + addql #1,%d0 | optimization for cmpil #-1,%d0 188 + jeq ret_from_syscall 187 189 movel %sp@(PT_OFF_ORIG_D0),%d0 188 190 cmpl #NR_syscalls,%d0 189 191 jcs syscall 192 + jra ret_from_syscall 190 193 badsys: 191 194 movel #-ENOSYS,%sp@(PT_OFF_D0) 192 195 jra ret_from_syscall ··· 214 211 | syscall trace? 215 212 tstb %a1@(TINFO_FLAGS+2) 216 213 jmi do_trace_entry 214 + | seccomp filter active? 215 + btst #5,%a1@(TINFO_FLAGS+2) 216 + bnes do_trace_entry 217 217 cmpl #NR_syscalls,%d0 218 218 jcc badsys 219 219 syscall:
+5 -1
arch/m68k/kernel/ptrace.c
··· 21 21 #include <linux/signal.h> 22 22 #include <linux/regset.h> 23 23 #include <linux/elf.h> 24 - 24 + #include <linux/seccomp.h> 25 25 #include <linux/uaccess.h> 26 26 #include <asm/page.h> 27 27 #include <asm/processor.h> ··· 278 278 279 279 if (test_thread_flag(TIF_SYSCALL_TRACE)) 280 280 ret = ptrace_report_syscall_entry(task_pt_regs(current)); 281 + 282 + if (secure_computing() == -1) 283 + return -1; 284 + 281 285 return ret; 282 286 } 283 287
+2 -2
arch/m68k/q40/q40ints.c
··· 201 201 #define DEBUG_Q40INT 202 202 /*#define IP_USE_DISABLE *//* would be nice, but crashes ???? */ 203 203 204 - static int mext_disabled=0; /* ext irq disabled by master chip? */ 205 - static int aliased_irq=0; /* how many times inside handler ?*/ 204 + static int mext_disabled; /* ext irq disabled by master chip? */ 205 + static int aliased_irq; /* how many times inside handler ?*/ 206 206 207 207 208 208 /* got interrupt, dispatch to ISA or keyboard/timer IRQs */
+7 -1
tools/testing/selftests/seccomp/seccomp_bpf.c
··· 138 138 # define __NR_seccomp 337 139 139 # elif defined(__sh__) 140 140 # define __NR_seccomp 372 141 + # elif defined(__mc68000__) 142 + # define __NR_seccomp 380 141 143 # else 142 144 # warning "seccomp syscall number unknown for this architecture" 143 145 # define __NR_seccomp 0xffff ··· 1840 1838 # define ARCH_REGS struct pt_regs 1841 1839 # define SYSCALL_NUM(_regs) (_regs).regs[3] 1842 1840 # define SYSCALL_RET(_regs) (_regs).regs[0] 1841 + #elif defined(__mc68000__) 1842 + # define ARCH_REGS struct user_regs_struct 1843 + # define SYSCALL_NUM(_regs) (_regs).orig_d0 1844 + # define SYSCALL_RET(_regs) (_regs).d0 1843 1845 #else 1844 1846 # error "Do not know how to find your architecture's registers and syscalls" 1845 1847 #endif ··· 1908 1902 * Use PTRACE_GETREGS and PTRACE_SETREGS when available. This is useful for 1909 1903 * architectures without HAVE_ARCH_TRACEHOOK (e.g. User-mode Linux). 1910 1904 */ 1911 - #if defined(__x86_64__) || defined(__i386__) || defined(__mips__) 1905 + #if defined(__x86_64__) || defined(__i386__) || defined(__mips__) || defined(__mc68000__) 1912 1906 # define ARCH_GETREGS(_regs) ptrace(PTRACE_GETREGS, tracee, 0, &(_regs)) 1913 1907 # define ARCH_SETREGS(_regs) ptrace(PTRACE_SETREGS, tracee, 0, &(_regs)) 1914 1908 #else