summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authormartin <martin@NetBSD.org>2019-12-09 15:19:30 +0000
committermartin <martin@NetBSD.org>2019-12-09 15:19:30 +0000
commit2adeb2bcb85b6ee2c548cc786e2abefab103a39a (patch)
tree7ff04288f926e336241a69d81c91ca36c5ed88b5 /sys
parent66608338e5eb086db0e94194a627a4e1e40db294 (diff)
Pull up following revision(s) (requested by jmcneill in ticket #525):
external/cddl/osnet/dev/dtrace/aarch64/dtrace_isa.c: revision 1.1 distrib/sets/lists/modules/md.i386: revision 1.83 share/mk/bsd.own.mk: revision 1.1168 usr.bin/mkubootimage/mkubootimage.c: revision 1.25 sys/modules/dtrace/Makefile: revision 1.7 usr.bin/mkubootimage/mkubootimage.c: revision 1.26 sys/modules/dtrace/Makefile: revision 1.8 external/cddl/osnet/dist/lib/libdtrace/aarch64/dt_isadep.c: revision 1.2 distrib/sets/lists/modules/mi: revision 1.128 sys/arch/aarch64/include/frame.h: revision 1.3 sys/arch/evbarm/conf/mk.generic64: revision 1.4 external/cddl/osnet/dist/lib/libdtrace/common/dt_link.c: revision 1.12 sys/modules/cyclic/Makefile: revision 1.4 sys/arch/aarch64/conf/Makefile.aarch64: revision 1.16 external/cddl/osnet/dev/dtrace/aarch64/dtrace_subr.c: revision 1.1 sys/arch/aarch64/aarch64/start.S: revision 1.3 sys/arch/aarch64/aarch64/trap.c: revision 1.22 external/cddl/osnet/dev/fbt/aarch64/fbt_isa.c: revision 1.1 external/cddl/osnet/dev/dtrace/aarch64/dtrace_asm.S: revision 1.1 external/cddl/osnet/dev/fbt/aarch64/fbt_isa.h: revision 1.1 external/cddl/osnet/dev/dtrace/aarch64/regset.h: revision 1.1 external/cddl/osnet/lib/libdtrace/Makefile: revision 1.26 distrib/sets/lists/modules/md.amd64: revision 1.82 usr.bin/mkubootimage/mkubootimage.1: revision 1.13 distrib/sets/lists/modules/ad.arm: revision 1.14 Add KDTRACE_HOOKS support. Define lwp_trapframe() macro dtrace: add support for aarch64 Add syscall_linux back for other arm architectures (accidently removed in previous) Add -u flag for updating headers in place. Fix alignment of .text section by changing load address to 0xffffffc000000000 and adding 64 bytes of padding before the entry point. Update arm64 image header in place Move dtrace_syscall_linux out of mi set list Enable DTrace on aarch64 Fix signed/unsigned comparison
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/aarch64/aarch64/start.S9
-rw-r--r--sys/arch/aarch64/aarch64/trap.c29
-rw-r--r--sys/arch/aarch64/conf/Makefile.aarch644
-rw-r--r--sys/arch/aarch64/include/frame.h4
-rw-r--r--sys/arch/evbarm/conf/mk.generic6418
-rw-r--r--sys/modules/cyclic/Makefile2
-rw-r--r--sys/modules/dtrace/Makefile5
7 files changed, 53 insertions, 18 deletions
diff --git a/sys/arch/aarch64/aarch64/start.S b/sys/arch/aarch64/aarch64/start.S
index 1299bcf826d..fec275d9393 100644
--- a/sys/arch/aarch64/aarch64/start.S
+++ b/sys/arch/aarch64/aarch64/start.S
@@ -1,4 +1,4 @@
-/* $NetBSD: start.S,v 1.2 2018/10/18 09:01:51 skrll Exp $ */
+/* $NetBSD: start.S,v 1.2.6.1 2019/12/09 15:19:31 martin Exp $ */
/*
* Copyright (c) 2017 Ryo Shimizu <ryo@nerv.org>
@@ -32,7 +32,7 @@
#include <aarch64/asm.h>
-RCSID("$NetBSD: start.S,v 1.2 2018/10/18 09:01:51 skrll Exp $")
+RCSID("$NetBSD: start.S,v 1.2.6.1 2019/12/09 15:19:31 martin Exp $")
/* load far effective address (pc relative) */
.macro ADDR, reg, addr
@@ -41,6 +41,11 @@ RCSID("$NetBSD: start.S,v 1.2 2018/10/18 09:01:51 skrll Exp $")
.endm
/*
+ * Padding at start of kernel image to make room for 64-byte header (non-ELF booting)
+ */
+.space 64, 0x0
+
+/*
* Kernel start routine for aarch64 boards.
*/
.global start
diff --git a/sys/arch/aarch64/aarch64/trap.c b/sys/arch/aarch64/aarch64/trap.c
index 1bc0a13a700..cd49e5e4b07 100644
--- a/sys/arch/aarch64/aarch64/trap.c
+++ b/sys/arch/aarch64/aarch64/trap.c
@@ -1,4 +1,4 @@
-/* $NetBSD: trap.c,v 1.17.4.1 2019/08/07 10:19:54 martin Exp $ */
+/* $NetBSD: trap.c,v 1.17.4.2 2019/12/09 15:19:31 martin Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -31,10 +31,11 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.17.4.1 2019/08/07 10:19:54 martin Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.17.4.2 2019/12/09 15:19:31 martin Exp $");
#include "opt_arm_intr_impl.h"
#include "opt_compat_netbsd32.h"
+#include "opt_dtrace.h"
#include <sys/param.h>
#include <sys/kauth.h>
@@ -73,11 +74,20 @@ __KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.17.4.1 2019/08/07 10:19:54 martin Exp $")
#include <ddb/db_output.h>
#include <machine/db_machdep.h>
#endif
+#ifdef KDTRACE_HOOKS
+#include <sys/dtrace_bsd.h>
+#endif
#ifdef DDB
int sigill_debug = 0;
#endif
+#ifdef KDTRACE_HOOKS
+dtrace_doubletrap_func_t dtrace_doubletrap_func = NULL;
+dtrace_trap_func_t dtrace_trap_func = NULL;
+int (*dtrace_invop_jump_addr)(struct trapframe *);
+#endif
+
const char * const trap_names[] = {
[ESR_EC_UNKNOWN] = "Unknown Reason (Illegal Instruction)",
[ESR_EC_SERROR] = "SError Interrupt",
@@ -186,16 +196,29 @@ trap_el1h_sync(struct trapframe *tf)
else
daif_enable(DAIF_D|DAIF_A);
+#ifdef KDTRACE_HOOKS
+ if (dtrace_trap_func != NULL && (*dtrace_trap_func)(tf, eclass))
+ return;
+#endif
+
switch (eclass) {
case ESR_EC_INSN_ABT_EL1:
case ESR_EC_DATA_ABT_EL1:
data_abort_handler(tf, eclass);
break;
+ case ESR_EC_BKPT_INSN_A64:
+#ifdef KDTRACE_HOOKS
+ if (__SHIFTOUT(esr, ESR_ISS) == 0x40d &&
+ dtrace_invop_jump_addr != 0) {
+ (*dtrace_invop_jump_addr)(tf);
+ break;
+ }
+ /* FALLTHROUGH */
+#endif
case ESR_EC_BRKPNT_EL1:
case ESR_EC_SW_STEP_EL1:
case ESR_EC_WTCHPNT_EL1:
- case ESR_EC_BKPT_INSN_A64:
#ifdef DDB
if (eclass == ESR_EC_BRKPNT_EL1)
kdb_trap(DB_TRAP_BREAKPOINT, tf);
diff --git a/sys/arch/aarch64/conf/Makefile.aarch64 b/sys/arch/aarch64/conf/Makefile.aarch64
index 282f863c7ba..d19aab72a05 100644
--- a/sys/arch/aarch64/conf/Makefile.aarch64
+++ b/sys/arch/aarch64/conf/Makefile.aarch64
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.aarch64,v 1.15 2019/03/03 07:04:40 maxv Exp $
+# $NetBSD: Makefile.aarch64,v 1.15.4.1 2019/12/09 15:19:31 martin Exp $
# Makefile for NetBSD
#
@@ -74,7 +74,7 @@ locore.o: ${ARM}/aarch64/locore.S assym.h
## (5) link settings
##
KERNLDSCRIPT?= ${ARM}/conf/kern.ldscript
-LOADADDRESS?= 0xffffffc000000040
+LOADADDRESS?= 0xffffffc000000000
LINKFLAGS_NORMAL= -X
# Strip AArch64 mapping symbols from the kernel image, as they interfere
diff --git a/sys/arch/aarch64/include/frame.h b/sys/arch/aarch64/include/frame.h
index c01b82e148e..717479d36b1 100644
--- a/sys/arch/aarch64/include/frame.h
+++ b/sys/arch/aarch64/include/frame.h
@@ -1,4 +1,4 @@
-/* $NetBSD: frame.h,v 1.2 2018/04/01 04:35:03 ryo Exp $ */
+/* $NetBSD: frame.h,v 1.2.6.1 2019/12/09 15:19:31 martin Exp $ */
/*-
* Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -72,6 +72,8 @@ struct faultbuf {
register_t fb_reg[FB_MAX];
};
+#define lwp_trapframe(l) ((l)->l_md.md_utf)
+
#elif defined(__arm__)
#include <arm/frame.h>
diff --git a/sys/arch/evbarm/conf/mk.generic64 b/sys/arch/evbarm/conf/mk.generic64
index a6af068cc09..80fcfe16fc1 100644
--- a/sys/arch/evbarm/conf/mk.generic64
+++ b/sys/arch/evbarm/conf/mk.generic64
@@ -1,4 +1,4 @@
-# $NetBSD: mk.generic64,v 1.3 2018/09/29 17:05:55 jmcneill Exp $
+# $NetBSD: mk.generic64,v 1.3.4.1 2019/12/09 15:19:31 martin Exp $
SYSTEM_FIRST_OBJ= start.o
SYSTEM_FIRST_SFILE= ${ARM}/aarch64/start.S
@@ -7,15 +7,15 @@ _OSRELEASE!= ${HOST_SH} $S/conf/osrelease.sh
BOARDTYPE= evbarm64
-MKUBOOTIMAGEARGS= -f arm64 -a 0x200000
+MKUBOOTIMAGEARGS= -f arm64 -u -a 0x200000
MKKNLIMG= ${THISARM}/compile/rpi-mkknlimg.sh
-SYSTEM_LD_TAIL_EXTRA+=; \
- echo ${OBJCOPY} -S -O binary $@ $@.bin; \
- ${OBJCOPY} -S -O binary $@ $@.bin; \
- echo ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS} $@.bin $@.ub; \
- ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS} $@.bin $@.ub; \
- echo ${MKKNLIMG} $@.ub $@.img; \
- ${HOST_SH} ${MKKNLIMG} $@.ub $@.img;
+SYSTEM_LD_TAIL_EXTRA+= && \
+ echo ${OBJCOPY} -S -O binary $@ $@.bin && \
+ ${OBJCOPY} -S -O binary $@ $@.bin && \
+ echo ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS} $@.bin $@.ub && \
+ ${TOOL_MKUBOOTIMAGE} ${MKUBOOTIMAGEARGS} $@.bin $@.ub && \
+ echo ${MKKNLIMG} $@.ub $@.img && \
+ ${HOST_SH} ${MKKNLIMG} $@.ub $@.img
EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.img@}
diff --git a/sys/modules/cyclic/Makefile b/sys/modules/cyclic/Makefile
index cc1222c8add..58f8e0deead 100644
--- a/sys/modules/cyclic/Makefile
+++ b/sys/modules/cyclic/Makefile
@@ -8,6 +8,8 @@ OSNETDIR=${NETBSDSRCDIR}/external/cddl/osnet
.if exists(${OSNETDIR}/dev/cyclic/${MACHINE:S/amd64/i386/})
ARCH=${MACHINE:S/amd64/i386/}
+.elif exists(${OSNETDIR}/dev/cyclic/${MACHINE_CPU:S/aarch64/arm/})
+ARCH=${MACHINE_CPU:S/aarch64/arm/}
.elif exists(${OSNETDIR}/dev/cyclic/${MACHINE_CPU})
ARCH=${MACHINE_CPU}
.else
diff --git a/sys/modules/dtrace/Makefile b/sys/modules/dtrace/Makefile
index b26c6317937..a92117334cb 100644
--- a/sys/modules/dtrace/Makefile
+++ b/sys/modules/dtrace/Makefile
@@ -1,10 +1,13 @@
-# $NetBSD: Makefile,v 1.6 2015/03/08 17:11:57 christos Exp $
+# $NetBSD: Makefile,v 1.6.22.1 2019/12/09 15:19:31 martin Exp $
# $FreeBSD: src/sys/modules/dtrace/Makefile,v 1.6.2.1 2009/08/03 08:13:06 kensmith Exp $
.include <bsd.own.mk>
SUBDIR= dtrace sdt fbt lockstat profile syscall
+
+.if ${MACHINE_ARCH} != "aarch64"
SUBDIR+= linux_syscall
+.endif
.if ${MACHINE_ARCH} == "x86_64"
SUBDIR+= netbsd32_syscall