1234567891011121314151617181920212223242526272829303132333435363738394041 |
- # -*- coding: UTF-8 -*-
- import os
- def extract_line(fname, pattern):
- with open(fname, "r") as f:
- lines = f.readlines()
- f.close()
- with open("entry_point.S", "w") as f:
- counter=0
- f.write(".section \".text.entrypoint\"\n")
- f.write(".globl system_vectors\n")
- f.write("\n")
- f.write("ma35d1_start:\n")
- for line in lines:
- if pattern in line:
- new_line = " .word 0x" + line[6:14] + "\n"
- f.write(new_line)
- counter = counter+1
- f.write("\n")
- f.write(".L__aarch32_code:\n")
- f.write("\n")
- # Append NOP to align vector table.
- counter = (counter+5)*4
- counter_align = (counter+32-1) & ~(32-1)
- nop_num = (counter_align - counter) / 4
- print hex(counter), hex(counter_align), nop_num
- j = 0
- while j < nop_num:
- f.write(" nop\n")
- j += 1
- f.write(" ldr r0, =ma35d1_start\n")
- f.write(" mov sp, r0\n")
- f.write(" ldr pc, =system_vectors\n")
- f.close()
- def formatfiles():
- extract_line("preload.txt", ":\t")
- if __name__ == '__main__':
- formatfiles()
|