aboutsummaryrefslogtreecommitdiff
path: root/sys/arm64/include/db_machdep.h
Commit message (Collapse)AuthorAgeFilesLines
* arm64: Support hardware breakpointsAndrew Turner2024-04-121-0/+3
| | | | | | | | | | | | As with watchpoints allow the kernel debugger to set hardware breakpoints on arm64. These have been tested to work in both the ddb and gdb backends. Reviewed by: jhb (earlier version) Sponsored by: Arm Ltd Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D44355
* arm64: Add EL1 hardware breakpoint exceptionsAndrew Turner2024-03-211-1/+3
| | | | | | Reviewed by: jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D44353
* sys: Remove $FreeBSD$: two-line .h patternWarner Losh2023-08-161-2/+0
| | | | Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
* Remove unused registes from the arm pcbAndrew Turner2023-03-231-2/+2
| | | | | | | | | | These were kept for ABI reasons. Remove them and bump __FreeBSD_version so debuggers can be updated to use the new layout. Reviewed by: jhb Sponsored by: Arm Ltd Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D35378
* arm64: Fix a logic bug in is_load_instr().John Baldwin2021-09-151-1/+1
| | | | | | | | | | Logical and ('&&') was used to join two conditions instead of logical or ('||') causing some store instructions to not be recognized. Reported by: GCC 9 -Wparentheses Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D31949
* arm64: add definition for IS_SSTEP_TRAP()Mitchell Horne2021-03-011-0/+2
| | | | | | | | | | | arm64 has a distinct exception code for single-step, so we can use this to detect when an unexpected SS trap is encountered, or when an expected one is not. See db_stop_at_pc(). Reviewed by: markj, jhb MFC after: 5 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28942
* arm64: update kdb_thrctx->pcb_lr with BKPT_SKIPMitchell Horne2021-03-011-2/+3
| | | | | | | | | | This value should be kept in sync with updates to kdb_frame->tf_elr, since it is queried by PC_REGS() in several places. Reviewed by: markj, jhb MFC after: 5 days Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D28943
* arm64: remove pcb_pcmhorne2021-01-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | The program counter field in the PCB is written in exactly one place, makectx(), upon entry to the debugger. For threads other than curthread, its value will be empty, or bogus. Rather than writing to this field in more places, it can be removed in favor of using the value in the link register. To make this clearer, pcb->pcb_x[30] is renamed to pcb->pcb_lr, similar to what already exists in struct trapframe. Also, prefer lr to x30 in assembly, as it better conveys intention. This improves PC_REGS() for kdb_thread != curthread. It is required for a functional gdb(4) stub, fixing the output of `info threads`, in particular. The space occupied by pcb_pc is retained, for compatibility with kgdb. Reviewed by: markj, jhb MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D27720
* Fix printing of negative offsets (typically from frame pointers) again.Bruce Evans2017-03-261-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | I fixed this in 1997, but the fix was over-engineered and fragile and was broken in 2003 if not before. i386 parameters were copied to 8 other arches verbatim, mostly after they stopped working on i386, and mostly without the large comment saying how the values were chosen on i386. powerpc has a non-verbatim copy which just changes the uncritical parameter and seems to add a sign extension bug to it. Just treat negative offsets as offsets if they are no more negative than -db_offset_max (default -64K), and remove all the broken parameters. -64K is not very negative, but it is enough for frame and stack pointer offsets since kernel stacks are small. The over-engineering was mainly to go more negative than -64K for the negative offset format, without affecting printing for more than a single address. Addresses in the top 64K of a (full 32-bit or 64-bit) address space are now printed less well, but there aren't many interesting ones. For arches that have many interesting ones very near the top (e.g., 68k has interrupt vectors there), there would be no good limit for the negative offset format and -64K is a good as anything. Notes: svn path=/head/; revision=316001
* Bring in the start of the arm64 kernel.Andrew Turner2015-04-131-0/+126
This is only the minimum set of files needed to boot in qemu. As such it is missing a few things. The bus_dma code is currently only stub functions with a full implementation from the development tree to follow. The gic driver has been copied as the interrupt framework is different. It is expected the two drivers will be merged by the arm intrng project, however this will need to be imported into the tree and support for arm64 would need to be added. This includes code developed by myself, SemiHalf, Ed Maste, and Robin Randhawa from ARM. This has been funded by the FreeBSD Foundation, with early development by myself in my spare time with assistance from Robin. Differential Revision: https://reviews.freebsd.org/D2199 Reviewed by: emaste, imp Relnotes: yes Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=281494