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