aboutsummaryrefslogtreecommitdiff
path: root/scripts/gdb/linux/timerlist.py
diff options
context:
space:
mode:
authorDeepak Gupta <[email protected]>2023-10-26 16:38:23 -0700
committerAndrew Morton <[email protected]>2023-11-01 12:46:59 -0700
commitcd24f44050f31d69ed5851b55ef77ea6346aa814 (patch)
tree508397661af55316c485c47c4d23c69e3a48bdc6 /scripts/gdb/linux/timerlist.py
parente3bc0c427f2aee757c249e0f087b0a0e810d66e3 (diff)
scripts/gdb: add lx_current support for riscv
csr_sscratch CSR holds current task_struct address when hart is in user space. Trap handler on entry spills csr_sscratch into "tp" (x2) register and zeroes out csr_sscratch CSR. Trap handler on exit reloads "tp" with expected user mode value and place current task_struct address again in csr_sscratch CSR. This patch assumes "tp" is pointing to task_struct. If value in csr_sscratch is numerically greater than "tp" then it assumes csr_sscratch is correct address of current task_struct. This logic holds when - hart is in user space, "tp" will be less than csr_sscratch. - hart is in kernel space but not in trap handler, "tp" will be more than csr_sscratch (csr_sscratch being equal to 0). - hart is executing trap handler - "tp" is still pointing to user mode but csr_sscratch contains ptr to task_struct. Thus numerically higher. - "tp" is pointing to task_struct but csr_sscratch now contains either 0 or numerically smaller value (transiently holds user mode tp) Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Deepak Gupta <[email protected]> Reviewed-by: Andrew Jones <[email protected]> Reviewed-by: Palmer Dabbelt <[email protected]> Acked-by: Palmer Dabbelt <[email protected]> Tested-by: Hsieh-Tseng Shen <[email protected]> Cc: Albert Ou <[email protected]> Cc: Glenn Washburn <[email protected]> Cc: Jan Kiszka <[email protected]> Cc: Jeff Xie <[email protected]> Cc: Kieran Bingham <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Paul Walmsley <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
Diffstat (limited to 'scripts/gdb/linux/timerlist.py')
0 files changed, 0 insertions, 0 deletions