;****************************************************************************
;** do_save_current_register_arm64.cmm
;** This script is designed to save current a set of registers(Arm64).
;**
;**
;**
;** when who what, where, why
;** -------------- ------------ ------------------------------------------------------
;** 07/12/2023 austindh.kim@gmail.com First version
;****************************************************************************
ENTRY &ramdump_dir &output_file
;specify the output directory of dump file
&dump_debug_file="&ramdump_dir"+"/&output_file.cmm"
;=====specify the output directory of dump file, end =====
open #1 &dump_debug_file /create
&pstate=0x0
&r0=0x0
&r1=0x0
&r2=0x0
&r3=0x0
&r4=0x0
&r5=0x0
&r6=0x0
&r7=0x0
&r8=0x0
&r9=0x0
&r10=0x0
&r11=0x0
&r12=0x0
&r13=0x0
&r14=0x0
&r15=0x0
&r16=0x0
&r17=0x0
&r18=0x0
&r19=0x0
&r20=0x0
&r21=0x0
&r22=0x0
&r23=0x0
&r24=0x0
&r25=0x0
&r26=0x0
&r27=0x0
&r28=0x0
&r29=0x0
&r30=0x0
&pc=0x0
&sp=0x0
gosub ConfigureRegister64Bit
close #1
enddo
; *************************************************************************
; ConfigureRegister64Bit
;
; Read current Register and save it.
;
; *************************************************************************
ConfigureRegister64Bit:
LOCAL &temp
&pstate=r(cpsr)
&r0=r(x0)
&r1=r(x1)
&r2=r(x2)
&r3=r(x3)
&r4=r(x4)
&r5=r(x5)
&r6=r(x6)
&r7=r(x7)
&r8=r(x8)
&r9=r(x9)
&r10=r(x10)
&r11=r(x11)
&r12=r(x12)
&r13=r(x13)
&r14=r(x14)
&r15=r(x15)
&r16=r(x16)
&r17=r(x17)
&r18=r(x18)
&r19=r(x19)
&r20=r(x20)
&r21=r(x21)
&r22=r(x22)
&r23=r(x23)
&r24=r(x24)
&r25=r(x25)
&r26=r(x26)
&r27=r(x27)
&r28=r(x28)
&r29=r(x29)
&r30=r(x30)
&sp=r(sp)
&pc=r(pc)
write #1 "r.s cpsr 0x" &pstate
write #1 "r.s x0 0x" &r0
write #1 "r.s x1 0x" &r1
write #1 "r.s x2 0x" &r2
write #1 "r.s x3 0x" &r3
write #1 "r.s x4 0x" &r4
write #1 "r.s x5 0x" &r5
write #1 "r.s x6 0x" &r6
write #1 "r.s x7 0x" &r7
write #1 "r.s x8 0x" &r8
write #1 "r.s x9 0x" &r9
write #1 "r.s x10 0x" &r10
write #1 "r.s x11 0x" &r11
write #1 "r.s x12 0x" &r12
write #1 "r.s x13 0x" &r13
write #1 "r.s x14 0x" &r14
write #1 "r.s x15 0x" &r15
write #1 "r.s x16 0x" &r16
write #1 "r.s x17 0x" &r17
write #1 "r.s x18 0x" &r18
write #1 "r.s x19 0x" &r19
write #1 "r.s x20 0x" &r20
write #1 "r.s x21 0x" &r21
write #1 "r.s x22 0x" &r22
write #1 "r.s x23 0x" &r23
write #1 "r.s x24 0x" &r24
write #1 "r.s x25 0x" &r25
write #1 "r.s x26 0x" &r26
write #1 "r.s x27 0x" &r27
write #1 "r.s x28 0x" &r28
write #1 "r.s x29 0x" &r29
write #1 "r.s x30 0x" &r30
write #1 "r.s pc 0x" &pc
write #1 "r.s sp 0x" &sp
RETURN
'유용한 디버깅 팁 > TRACE32' 카테고리의 다른 글
[T32] gitlab link for 'awesome-trace32' (2) | 2023.08.03 |
---|---|
[Linux][Kernel][Debug] T32 - container_of 매크로 (0) | 2023.05.05 |
[crash-utility] crash-utilty 실행 시 디버깅 옵션(-d 6) (0) | 2023.04.01 |
[T32] 현재 레지스터 정보를 cmm 포멧으로 저장하기 - Linux kernel (0) | 2023.04.01 |
[Linux][Kernel][Debug] T32 - container_of 매크로 (0) | 2023.04.01 |