mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include <stdio.h>
 | |
| #include <stdlib.h>
 | |
| #include <stdint.h>
 | |
| int main(int argc, char *argv[]) {
 | |
|     if (argc < 3){
 | |
|         fprintf(stderr, "Expected 2 arguments: <raw GDB dump> <output binary>\n");
 | |
|         exit(1);
 | |
|     }
 | |
|     char* rawGDBfilePath = argv[1];
 | |
|     FILE* rawGDBfile;
 | |
|     if ((rawGDBfile = fopen(rawGDBfilePath,"rb"))==NULL) {
 | |
|         fprintf(stderr, "File not found: %s\n",rawGDBfilePath);
 | |
|         exit(1);
 | |
|     }
 | |
|     char* outFilePath = argv[2];
 | |
|     FILE* outFile = fopen(outFilePath,"w");
 | |
|     uint64_t qemuWord;
 | |
|     uint64_t verilogWord;
 | |
|     int bytesReturned=0;
 | |
|     do {
 | |
|         bytesReturned=fread(&qemuWord, 8, 1, rawGDBfile);
 | |
|         verilogWord = (((qemuWord>>0 )&0xff)<<56 | 
 | |
|                        ((qemuWord>>8 )&0xff)<<48 | 
 | |
|                        ((qemuWord>>16)&0xff)<<40 | 
 | |
|                        ((qemuWord>>24)&0xff)<<32 | 
 | |
|                        ((qemuWord>>32)&0xff)<<24 | 
 | |
|                        ((qemuWord>>40)&0xff)<<16 | 
 | |
|                        ((qemuWord>>48)&0xff)<<8  | 
 | |
|                        ((qemuWord>>56)&0xff)<<0);
 | |
|         fwrite(&verilogWord, 8, 1, outFile);
 | |
|     } while(bytesReturned!=0);
 | |
|     return 0;
 | |
| }
 |