Why the address indication in the Lauterbach T32 Data List window changes from UP:0xXXXXXXXX to MP:0xXXXXXXXX?

Viewed 50

I observe this when doing emulation with RISCV project. The Function I'm putting break point, and opened by "B::List C:XXXXXXXX" will show the disassembled code as below for the first round of emulation. The address is indicated to be UP:XXXXXXXX, I guess this means currently running in user mode?

UP:XXXXXXXX MyFunctionName: auipc x6, 0xYYYYY
UP:XXXXXXXX+1               jalr  x5, 0xZZZ(x6)

However, the second round onwards, the same code will become MP:XXXXXXXX (machine mode code?)

MP:XXXXXXXX MyFunctionName: auipc x6, 0xYYYYY
MP:XXXXXXXX+1               jalr  x5, 0xZZZ(x6)

Is there anyone seeing the same? And what may cause this? What does UP and MP mean? Thanks.

1 Answers

The UP: and MP: are called access classes. There's a description of of all RISCV-V related access classes in debugger_riscv.pdf.

P means "Program memory access". M means "Machine privilege level". U means "User privilege level".

Some of them can be combined, e.g. machine+program or user+program.

Why it changed "the second round onwards" is hard to say without more information, but I'd guess your processor switched from user to machine mode.

Related