transcode.py 1.2 KB

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