diff options
| author | martin <martin@NetBSD.org> | 2019-12-09 15:19:30 +0000 |
|---|---|---|
| committer | martin <martin@NetBSD.org> | 2019-12-09 15:19:30 +0000 |
| commit | 2adeb2bcb85b6ee2c548cc786e2abefab103a39a (patch) | |
| tree | 7ff04288f926e336241a69d81c91ca36c5ed88b5 /sys | |
| parent | 66608338e5eb086db0e94194a627a4e1e40db294 (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.S | 9 | ||||
| -rw-r--r-- | sys/arch/aarch64/aarch64/trap.c | 29 | ||||
| -rw-r--r-- | sys/arch/aarch64/conf/Makefile.aarch64 | 4 | ||||
| -rw-r--r-- | sys/arch/aarch64/include/frame.h | 4 | ||||
| -rw-r--r-- | sys/arch/evbarm/conf/mk.generic64 | 18 | ||||
| -rw-r--r-- | sys/modules/cyclic/Makefile | 2 | ||||
| -rw-r--r-- | sys/modules/dtrace/Makefile | 5 |
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 |
