Skip to content

Commit edf0bb0

Browse files
NonerKaoCharlesWu465
authored andcommitted
Support sdcause
Signed-off-by: Alan Kao <alankao@andestech.com>
1 parent 72c38ec commit edf0bb0

File tree

5 files changed

+7
-2
lines changed

5 files changed

+7
-2
lines changed

arch/riscv/include/asm/csr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
#define CSR_CYCLEH 0xc80
9090
#define CSR_TIMEH 0xc81
9191
#define CSR_INSTRETH 0xc82
92+
#define CSR_SDCAUSE 0x9c9
9293

9394
/* IE/IP (Supervisor/Machine Interrupt Enable/Pending) flags */
9495
#define IE_SIE (_AC(0x1, UL) << IRQ_S_SOFT)

arch/riscv/include/asm/ptrace.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ struct pt_regs {
4848
unsigned long sstatus;
4949
unsigned long sbadaddr;
5050
unsigned long scause;
51+
unsigned long sdcause;
5152
/* a0 value before the syscall */
5253
unsigned long orig_a0;
5354
};

arch/riscv/kernel/asm-offsets.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ void asm_offsets(void)
108108
OFFSET(PT_SSTATUS, pt_regs, sstatus);
109109
OFFSET(PT_SBADADDR, pt_regs, sbadaddr);
110110
OFFSET(PT_SCAUSE, pt_regs, scause);
111+
OFFSET(PT_SDCAUSE, pt_regs, sdcause);
111112

112113
/*
113114
* THREAD_{F,X}* might be larger than a S-type offset can handle, but

arch/riscv/kernel/entry.S

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,14 @@ _save_context:
8484
csrr s3, CSR_STVAL
8585
csrr s4, CSR_SCAUSE
8686
csrr s5, CSR_SSCRATCH
87+
csrr s5, CSR_SDCAUSE
8788
REG_S s0, PT_SP(sp)
8889
REG_S s1, PT_SSTATUS(sp)
8990
REG_S s2, PT_SEPC(sp)
9091
REG_S s3, PT_SBADADDR(sp)
9192
REG_S s4, PT_SCAUSE(sp)
9293
REG_S s5, PT_TP(sp)
94+
REG_S s6, PT_SDCAUSE(sp)
9395
.endm
9496

9597
/*

arch/riscv/kernel/process.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ void show_regs(struct pt_regs *regs)
5858
pr_cont(" t5 : " REG_FMT " t6 : " REG_FMT "\n",
5959
regs->t5, regs->t6);
6060

61-
pr_cont("sstatus: " REG_FMT " sbadaddr: " REG_FMT " scause: " REG_FMT "\n",
62-
regs->sstatus, regs->sbadaddr, regs->scause);
61+
pr_cont("sstatus: " REG_FMT " sbadaddr: " REG_FMT " scause: " REG_FMT " sdcause: " REG_FMT "\n",
62+
regs->sstatus, regs->sbadaddr, regs->scause, regs->sdcause);
6363
}
6464

6565
void start_thread(struct pt_regs *regs, unsigned long pc,

0 commit comments

Comments
 (0)