1# -*- coding: UTF-8 -*- 2 3import os 4 5def extract_line(fname, pattern): 6 with open(fname, "r") as f: 7 lines = f.readlines() 8 f.close() 9 with open("entry_point.S", "w") as f: 10 counter=0 11 f.write(".section \".text.entrypoint\"\n") 12 f.write(".globl system_vectors\n") 13 f.write("\n") 14 f.write("ma35d1_start:\n") 15 for line in lines: 16 if pattern in line: 17 new_line = " .word 0x" + line[6:14] + "\n" 18 f.write(new_line) 19 counter = counter+1 20 f.write("\n") 21 f.write(".L__aarch32_code:\n") 22 f.write("\n") 23 # Append NOP to align vector table. 24 counter = (counter+5)*4 25 counter_align = (counter+32-1) & ~(32-1) 26 nop_num = (counter_align - counter) / 4 27 print hex(counter), hex(counter_align), nop_num 28 j = 0 29 while j < nop_num: 30 f.write(" nop\n") 31 j += 1 32 f.write(" ldr r0, =ma35d1_start\n") 33 f.write(" mov sp, r0\n") 34 f.write(" ldr pc, =system_vectors\n") 35 f.close() 36 37def formatfiles(): 38 extract_line("preload.txt", ":\t") 39 40if __name__ == '__main__': 41 formatfiles() 42