basic stuff implemented
Details
Diff Detail
- Repository
- rS FreeBSD src repository - subversion
- Lint
- Lint Not Applicable 
- Unit
- Tests Not Applicable 
Event Timeline
| sys/arm64/arm64/db_trace.c | ||
|---|---|---|
| 77 ↗ | (On Diff #5965) | I think the changes in this file could be committed independently | 
| sys/arm64/arm64/db_trace.c | ||
|---|---|---|
| 77 ↗ | (On Diff #5965) | sounds reasonable, thanks! | 
| lib/libproc/proc_regs.c | ||
|---|---|---|
| 62 ↗ | (On Diff #5965) | This file could be split out and committed as is (although it won't work as we don't have ptrace support). | 
| sys/arm64/arm64/exception.S | ||
| 72–83 ↗ | (On Diff #5965) | what is this change for? | 
| sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c | ||
| 11887 ↗ | (On Diff #5965) | This should be sorted, aarch64 should be before amd64. | 
| sys/cddl/dev/dtrace/aarch64/dtrace_asm.S | ||
| 58–61 ↗ | (On Diff #5965) | This doesn't disable interrupts, only sets them to be disabled when returning from an exception. To disable them you need the daif register. | 
| 69–73 ↗ | (On Diff #5965) | See dtrace_interrupt_disable above | 
| 81 ↗ | (On Diff #5965) | Why not ldrb w0, [x0]? Then there is no need for the mov. | 
| 123–126 ↗ | (On Diff #5965) | This is wrong, it loads & stores data in 4-byte chunks, but then increments the address by 1. I expect you were intendign to use ldrb and strb here. | 
| 165–166 ↗ | (On Diff #5965) | You will need tow versions of this as sizeof(uint32_t) != sizeof(void *) | 
| sys/cddl/dev/fbt/aarch64/fbt_isa.c | ||
| 61 ↗ | (On Diff #5965) | This coment is incorrect, the 5th parameter is in x4. | 
| sys/arm64/arm64/exception.S | ||
|---|---|---|
| 72–83 ↗ | (On Diff #5987) | so in order to emulate 'store pair' instruction we have to reserve space (minimum required 96 bytes, I set 128). in case frame->tf_sp not changed during trap (say dtrace turned off), we have to skip 128 bytes reserved space. If frame->tf_sp changed, it will be used as new SP. | 
| sys/arm64/arm64/exception.S | ||
|---|---|---|
| 72–83 ↗ | (On Diff #5987) | I've reworked the code to simplify this. frame->tf_sp is the value of sp when entering the exception handler, you can adjust it as needed in save_registers after the mov x18, sp instruction. | 
| sys/arm64/arm64/exception.S | ||
|---|---|---|
| 71–82 ↗ | (On Diff #6010) | thanks! - it is much easier now | 
| cddl/contrib/opensolaris/lib/libdtrace/aarch64/dt_isadep.c | ||
|---|---|---|
| 82 ↗ | (On Diff #6010) | What is 0x3 for? If it's to check an alignment we should add a macro for this. | 
| lib/libproc/proc_bkpt.c | ||
| 58 ↗ | (On Diff #6010) | Is this just used in userland? We should allocate a unique value for it. | 
| sys/cddl/dev/dtrace/aarch64/dtrace_subr.c | ||
| 259 ↗ | (On Diff #6010) | Why 128? | 
| 260–261 ↗ | (On Diff #6010) | This looks wrong for the 32-bit store, it will write to sp and sp + 8 bytes, where it should write to sp and sp + 4 bytes. | 
| 265–266 ↗ | (On Diff #6010) | This has the same issue as above with the 32-bit instructions. do we need them? I would only expect to see them used when using the 32-bit ABI in userland. | 
| 275 ↗ | (On Diff #6010) | We need #define INSN_SIZE 4 in a header for use here. | 
| sys/cddl/dev/fbt/aarch64/fbt_isa.c | ||
| 156 ↗ | (On Diff #6010) | Why are you searching for ldp and not ret? | 
| cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c | ||
|---|---|---|
| 230–235 ↗ | (On Diff #6194) | What do we need to do here (for arm/mips in general, not just aarch64)? | 
| 432–437 ↗ | (On Diff #6194) | and what do we need to do here? | 
| lib/libproc/proc_regs.c | ||
| 62 ↗ | (On Diff #6194) | Yes, I'd like to see this committed as is. The aarch64 #ifs should be resorted to be first though to keep alpha order. | 
| lib/libproc/proc_bkpt.c | ||
|---|---|---|
| 58 ↗ | (On Diff #6194) | |
| cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c | ||
|---|---|---|
| 233 ↗ | (On Diff #6332) | This should be in alphabetical order, aarch64 should be before arm. | 
| 434 ↗ | (On Diff #6332) | And this | 
| 839 ↗ | (On Diff #6332) | And this | 
| cddl/lib/Makefile | ||
| 31 ↗ | (On Diff #6332) | This should be sorted, it was missed when arm was added, but that shouldn't mean we do the same with AArch64. | 
| cddl/lib/libdtrace/Makefile | ||
| 89 ↗ | (On Diff #6332) | Alphabetical | 
| lib/Makefile | ||
| 220 ↗ | (On Diff #6332) | Alphabetical | 
| lib/libproc/proc_bkpt.c | ||
| 54 ↗ | (On Diff #6332) | Alphabetical | 
| 55 ↗ | (On Diff #6332) | Can you use a different brk value? It might also pay to document them on the wiki. | 
| sys/arm64/arm64/trap.c | ||
| 267 ↗ | (On Diff #6332) | You should also check the breakpoint instruction has the correct value so we don't hit the ddb brk. | 
| sys/cddl/dev/dtrace/aarch64/dtrace_asm.S | ||
| 156–157 ↗ | (On Diff #6332) | Why not replace these two instructions with cbnz? | 
| 171–172 ↗ | (On Diff #6332) | And here | 
| sys/cddl/dev/fbt/aarch64/fbt_isa.c | ||
| 43 ↗ | (On Diff #6332) | This should be a unique value in the EL1 range. | 
| 116 ↗ | (On Diff #6332) | Does this function exist on arm64? | 
| 123 ↗ | (On Diff #6332) | This list should be checked in some central location. | 
| 167 ↗ | (On Diff #6332) | There is no branch delay slot on arm. It's also a bug in the 32-bit dtrace code. | 
| 195 ↗ | (On Diff #6332) | POPM? Shouldn't it be named DTRACE_INVOP_RET? | 
| lib/libproc/proc_bkpt.c | ||
|---|---|---|
| 58 ↗ | (On Diff #6429) | So I set 0x14 for libproc and 0x40d for dtrace | 
| 55 ↗ | (On Diff #6332) | I have set 20 as BRK value. See BREAKPOINT_INSTR define | 
| sys/cddl/dev/fbt/aarch64/fbt_isa.c | ||
| 44 ↗ | (On Diff #6429) | Ok let it be 0x40d | 
| 117 ↗ | (On Diff #6429) | not sure | 
| 124 ↗ | (On Diff #6429) | what you mean? | 
| 168 ↗ | (On Diff #6429) | right, thanks |