mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| define genCheckpoint
 | |
|     # GDB config
 | |
|     set pagination off
 | |
|     set logging overwrite on
 | |
|     set logging redirect on
 | |
|     set confirm off
 | |
| 
 | |
|     # Argument Parsing
 | |
|     set $tcpPort=$arg0
 | |
|     set $instrCount=$arg1
 | |
|     set $statePath=$arg2
 | |
|     set $ramPath=$arg2
 | |
|     set $checkPC=$arg3
 | |
|     set $checkPCoccurences=$arg4
 | |
|     eval "set $statePath = \"%s/stateGDB.txt\"", $statePath
 | |
|     eval "set $ramPath = \"%s/ramGDB.bin\"", $ramPath
 | |
| 
 | |
|     # Connect to QEMU session
 | |
|     eval "target extended-remote :%d",$tcpPort
 | |
| 
 | |
|     # QEMU Config
 | |
|     maintenance packet Qqemu.PhyMemMode:1
 | |
| 
 | |
|     # Symbol file
 | |
|     file ../buildroot-image-output/vmlinux
 | |
| 
 | |
|     # Step over reset vector into actual code
 | |
|     stepi 100
 | |
|     # Set breakpoint for where to stop
 | |
|     b do_idle
 | |
|     # Proceed to checkpoint 
 | |
|     printf "GDB proceeding to checkpoint at %d instrs\n", $instrCount
 | |
|     #stepi $instrCount-1000
 | |
|     eval "b *0x%s",$checkPC
 | |
|     ignore 2 $checkPCoccurences
 | |
|     c
 | |
|  
 | |
|     printf "Reached checkpoint at %d instrs\n", $instrCount
 | |
| 
 | |
|     # Log all registers to a file
 | |
|     printf "GDB storing state to %s\n", $statePath
 | |
|     eval "set logging file %s", $statePath
 | |
|     set logging on
 | |
|     info all-registers
 | |
|     set logging off
 | |
| 
 | |
|     # Log main memory to a file
 | |
|     printf "GDB storing RAM to %s\n", $ramPath
 | |
|     eval "dump binary memory %s 0x80000000 0xffffffff", $ramPath
 | |
|     
 | |
|     kill
 | |
|     q
 | |
| end
 |