ARMCA5.icf 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. /*-Memory Regions-*/
  2. define symbol __ICFEDIT_region_IROM1_start__ = 0x80000000;
  3. define symbol __ICFEDIT_region_IROM1_end__ = 0x801FFFFF;
  4. define symbol __ICFEDIT_region_IROM2_start__ = 0x0;
  5. define symbol __ICFEDIT_region_IROM2_end__ = 0x0;
  6. define symbol __ICFEDIT_region_EROM1_start__ = 0x0;
  7. define symbol __ICFEDIT_region_EROM1_end__ = 0x0;
  8. define symbol __ICFEDIT_region_EROM2_start__ = 0x0;
  9. define symbol __ICFEDIT_region_EROM2_end__ = 0x0;
  10. define symbol __ICFEDIT_region_EROM3_start__ = 0x0;
  11. define symbol __ICFEDIT_region_EROM3_end__ = 0x0;
  12. define symbol __ICFEDIT_region_IRAM1_start__ = 0x80200000;
  13. define symbol __ICFEDIT_region_IRAM1_end__ = 0x803FFFFF;
  14. define symbol __ICFEDIT_region_IRAM2_start__ = 0x0;
  15. define symbol __ICFEDIT_region_IRAM2_end__ = 0x0;
  16. define symbol __ICFEDIT_region_ERAM1_start__ = 0x0;
  17. define symbol __ICFEDIT_region_ERAM1_end__ = 0x0;
  18. define symbol __ICFEDIT_region_ERAM2_start__ = 0x0;
  19. define symbol __ICFEDIT_region_ERAM2_end__ = 0x0;
  20. define symbol __ICFEDIT_region_ERAM3_start__ = 0x0;
  21. define symbol __ICFEDIT_region_ERAM3_end__ = 0x0;
  22. define symbol __ICFEDIT_region_TTB_start__ = 0x80500000;
  23. define symbol __ICFEDIT_region_TTB_end__ = 0x805FFFFF;
  24. /*-Sizes-*/
  25. define symbol __ICFEDIT_size_cstack__ = 0x1000;
  26. define symbol __ICFEDIT_size_irqstack__ = 0x100;
  27. define symbol __ICFEDIT_size_fiqstack__ = 0x100;
  28. define symbol __ICFEDIT_size_svcstack__ = 0x100;
  29. define symbol __ICFEDIT_size_abtstack__ = 0x100;
  30. define symbol __ICFEDIT_size_undstack__ = 0x100;
  31. define symbol __ICFEDIT_size_heap__ = 0x8000;
  32. define symbol __ICFEDIT_size_ttb__ = 0x4000;
  33. define memory mem with size = 4G;
  34. define region IROM_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__]
  35. | mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__];
  36. define region IRAM_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__]
  37. | mem:[from __ICFEDIT_region_IRAM2_start__ to __ICFEDIT_region_IRAM2_end__];
  38. define region ERAM_region = mem:[from __ICFEDIT_region_ERAM1_start__ to __ICFEDIT_region_ERAM1_end__]
  39. | mem:[from __ICFEDIT_region_ERAM2_start__ to __ICFEDIT_region_ERAM2_end__]
  40. | mem:[from __ICFEDIT_region_ERAM3_start__ to __ICFEDIT_region_ERAM3_end__];
  41. define region TTB_region = mem:[from __ICFEDIT_region_TTB_start__ to __ICFEDIT_region_TTB_end__ ];
  42. define block USR_STACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
  43. define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { };
  44. define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { };
  45. define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { };
  46. define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { };
  47. define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { };
  48. define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
  49. define block TTB with alignment = 8, size = __ICFEDIT_size_ttb__ { section TTB };
  50. do not initialize { section .noinit };
  51. initialize by copy { readwrite };
  52. if (isdefinedsymbol(__USE_DLIB_PERTHREAD))
  53. {
  54. // Required in a multi-threaded application
  55. initialize by copy with packing = none { section __DLIB_PERTHREAD };
  56. }
  57. place at address mem:__ICFEDIT_region_IROM1_start__ { readonly section RESET };
  58. place in IROM_region { readonly };
  59. place in IRAM_region { readwrite, block HEAP, block USR_STACK, block IRQ_STACK, block FIQ_STACK, block SVC_STACK, block ABT_STACK, block UND_STACK };
  60. place in TTB_region { block TTB };