diff options
author | Youling Tang <tangyouling@kylinos.cn> | 2023-12-16 14:51:28 +0800 |
---|---|---|
committer | Andrew Morton <akpm@linux-foundation.org> | 2023-12-29 12:22:25 -0800 |
commit | d738bced865a1473ea9a5e54734def2d40052e0c (patch) | |
tree | 95fafe26ed3a5341b6f0bef056a24f6f2014efc5 /scripts | |
parent | 18d565ea95fe553f442c5bbc5050415bab3c3fa4 (diff) | |
download | lwn-d738bced865a1473ea9a5e54734def2d40052e0c.tar.gz lwn-d738bced865a1473ea9a5e54734def2d40052e0c.zip |
scripts/decodecode: add support for LoongArch
An example how to invoke decodecode for loongarch64:
$ echo 'Code: 380839f6 380831f9 28412bae <24000ca6>
004081ad 0014cb50 004083e8 02bff34c 58008e91' | \
ARCH=loongarch CROSS_COMPILE=loongarch64-linux-gnu- \
./scripts/decodecode
Code: 380839f6 380831f9 28412bae <24000ca6> 004081ad 0014cb50 004083e8 02bff34c 58008e91
All code
========
0: 380839f6 ldx.w $fp, $t3, $t2
4: 380831f9 ldx.w $s2, $t3, $t0
8: 28412bae ld.h $t2, $s6, 74(0x4a)
c:* 24000ca6 ldptr.w $a2, $a1, 12(0xc) <-- trapping instruction
10: 004081ad slli.w $t1, $t1, 0x0
14: 0014cb50 and $t4, $s3, $t6
18: 004083e8 slli.w $a4, $s8, 0x0
1c: 02bff34c addi.w $t0, $s3, -4(0xffc)
20: 58008e91 beq $t8, $t5, 140(0x8c) # 0xac
Code starting with the faulting instruction
===========================================
0: 24000ca6 ldptr.w $a2, $a1, 12(0xc)
4: 004081ad slli.w $t1, $t1, 0x0
8: 0014cb50 and $t4, $s3, $t6
c: 004083e8 slli.w $a4, $s8, 0x0
10: 02bff34c addi.w $t0, $s3, -4(0xffc)
14: 58008e91 beq $t8, $t5, 140(0x8c) # 0xa0
Link: https://lkml.kernel.org/r/MW4PR84MB3145B99B9677BB7887BB26CD8192A@MW4PR84MB3145.NAMPRD84.PROD.OUTLOOK.COM
Signed-off-by: Youling Tang <tangyouling@kylinos.cn>
Acked-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/decodecode | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/scripts/decodecode b/scripts/decodecode index 8fe71c292381..6364218b2178 100755 --- a/scripts/decodecode +++ b/scripts/decodecode @@ -67,6 +67,7 @@ if [ -z "$ARCH" ]; then case `uname -m` in aarch64*) ARCH=arm64 ;; arm*) ARCH=arm ;; + loongarch*) ARCH=loongarch ;; esac fi @@ -98,6 +99,10 @@ disas() { ${CROSS_COMPILE}strip $t.o fi + if [ "$ARCH" = "loongarch" ]; then + ${CROSS_COMPILE}strip $t.o + fi + if [ $pc_sub -ne 0 ]; then if [ $PC ]; then adj_vma=$(( $PC - $pc_sub )) |