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;
 | 
						|
}
 |