i_freertos.pas 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. {
  2. This unit implements support information structures for the FPC FreeRTOS target
  3. Copyright (c) 1998-2006 by Peter Vreman
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  15. ****************************************************************************
  16. }
  17. unit i_freertos;
  18. {$i fpcdefs.inc}
  19. {$ifdef go32v2}
  20. { As wlib uses a different Dos-Extender, long-command line
  21. encoding for DJGPP does not work here.
  22. Put all inside a script file instead }
  23. {$define USE_SCRIPTED_WLIB}
  24. {$endif}
  25. interface
  26. uses
  27. systems;
  28. const
  29. {$ifdef dummy}
  30. system_arm_embedded_info : tsysteminfo =
  31. (
  32. system : system_arm_embedded;
  33. name : 'Embedded';
  34. shortname : 'embedded';
  35. flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  36. tf_smartlink_sections,tf_init_final_units_by_calls];
  37. cpu : cpu_arm;
  38. unit_env : '';
  39. extradefines : '';
  40. exeext : '';
  41. defext : '.def';
  42. scriptext : '.sh';
  43. smartext : '.sl';
  44. unitext : '.ppu';
  45. unitlibext : '.ppl';
  46. asmext : '.s';
  47. objext : '.o';
  48. resext : '.res';
  49. resobjext : '.or';
  50. sharedlibext : '.so';
  51. staticlibext : '.a';
  52. staticlibprefix : 'libp';
  53. sharedlibprefix : 'lib';
  54. sharedClibext : '.so';
  55. staticClibext : '.a';
  56. staticClibprefix : 'lib';
  57. sharedClibprefix : 'lib';
  58. importlibprefix : 'libimp';
  59. importlibext : '.a';
  60. Cprefix : '';
  61. newline : #10;
  62. dirsep : '/';
  63. assem : as_gas;
  64. assemextern : as_gas;
  65. link : ld_none;
  66. linkextern : ld_embedded;
  67. ar : ar_gnu_ar;
  68. res : res_none;
  69. dbg : dbg_dwarf2;
  70. script : script_unix;
  71. endian : endian_little;
  72. alignment :
  73. (
  74. procalign : 4;
  75. loopalign : 4;
  76. jumpalign : 0;
  77. jumpalignskipmax : 0;
  78. coalescealign : 0;
  79. coalescealignskipmax: 0;
  80. constalignmin : 0;
  81. constalignmax : 4;
  82. varalignmin : 0;
  83. varalignmax : 4;
  84. localalignmin : 4;
  85. localalignmax : 4;
  86. recordalignmin : 0;
  87. recordalignmax : 4;
  88. maxCrecordalign : 4
  89. );
  90. first_parm_offset : 8;
  91. stacksize : 262144;
  92. stackalign : 4;
  93. abi : abi_default;
  94. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  95. );
  96. system_avr_embedded_info : tsysteminfo =
  97. (
  98. system : system_avr_embedded;
  99. name : 'Embedded';
  100. shortname : 'embedded';
  101. flags : [tf_needs_symbol_size,tf_files_case_sensitive,
  102. tf_smartlink_sections,tf_init_final_units_by_calls];
  103. cpu : cpu_avr;
  104. unit_env : '';
  105. extradefines : '';
  106. exeext : '';
  107. defext : '.def';
  108. scriptext : '.sh';
  109. smartext : '.sl';
  110. unitext : '.ppu';
  111. unitlibext : '.ppl';
  112. asmext : '.s';
  113. objext : '.o';
  114. resext : '.res';
  115. resobjext : '.or';
  116. sharedlibext : '.so';
  117. staticlibext : '.a';
  118. staticlibprefix : 'libp';
  119. sharedlibprefix : 'lib';
  120. sharedClibext : '.so';
  121. staticClibext : '.a';
  122. staticClibprefix : 'lib';
  123. sharedClibprefix : 'lib';
  124. importlibprefix : 'libimp';
  125. importlibext : '.a';
  126. Cprefix : '';
  127. newline : #10;
  128. dirsep : '/';
  129. assem : as_gas;
  130. assemextern : as_gas;
  131. link : ld_none;
  132. linkextern : ld_embedded;
  133. ar : ar_gnu_ar;
  134. res : res_none;
  135. dbg : dbg_dwarf3;
  136. script : script_unix;
  137. endian : endian_little;
  138. alignment :
  139. (
  140. procalign : 1;
  141. loopalign : 1;
  142. jumpalign : 0;
  143. jumpalignskipmax : 0;
  144. coalescealign : 0;
  145. coalescealignskipmax: 0;
  146. constalignmin : 0;
  147. constalignmax : 1;
  148. varalignmin : 0;
  149. varalignmax : 1;
  150. localalignmin : 0;
  151. localalignmax : 1;
  152. recordalignmin : 0;
  153. recordalignmax : 1;
  154. maxCrecordalign : 1
  155. );
  156. first_parm_offset : 0;
  157. stacksize : 1024;
  158. stackalign : 1;
  159. abi : abi_default;
  160. llvmdatalayout : 'todo';
  161. );
  162. system_mipsel_embedded_info : tsysteminfo =
  163. (
  164. system : system_mipsel_embedded;
  165. name : 'Embedded';
  166. shortname : 'embedded';
  167. flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
  168. tf_smartlink_sections];
  169. cpu : cpu_mipsel;
  170. unit_env : '';
  171. extradefines : '';
  172. exeext : '';
  173. defext : '.def';
  174. scriptext : '.sh';
  175. smartext : '.sl';
  176. unitext : '.ppu';
  177. unitlibext : '.ppl';
  178. asmext : '.s';
  179. objext : '.o';
  180. resext : '.res';
  181. resobjext : '.or';
  182. sharedlibext : '.so';
  183. staticlibext : '.a';
  184. staticlibprefix : 'libp';
  185. sharedlibprefix : 'lib';
  186. sharedClibext : '.so';
  187. staticClibext : '.a';
  188. staticClibprefix : 'lib';
  189. sharedClibprefix : 'lib';
  190. importlibprefix : 'libimp';
  191. importlibext : '.a';
  192. Cprefix : '';
  193. newline : #10;
  194. dirsep : '/';
  195. assem : as_gas;
  196. assemextern : as_gas;
  197. link : ld_none;
  198. linkextern : ld_embedded;
  199. ar : ar_gnu_ar;
  200. res : res_none;
  201. dbg : dbg_dwarf2;
  202. script : script_unix;
  203. endian : endian_little;
  204. alignment :
  205. (
  206. procalign : 4;
  207. loopalign : 4;
  208. jumpalign : 0;
  209. jumpalignskipmax : 0;
  210. coalescealign : 0;
  211. coalescealignskipmax: 0;
  212. constalignmin : 0;
  213. constalignmax : 4;
  214. varalignmin : 0;
  215. varalignmax : 4;
  216. localalignmin : 4;
  217. localalignmax : 8;
  218. recordalignmin : 0;
  219. recordalignmax : 8;
  220. maxCrecordalign : 4
  221. );
  222. first_parm_offset : 0;
  223. stacksize : 262144;
  224. stackalign : 8;
  225. abi : abi_default;
  226. llvmdatalayout : 'todo';
  227. );
  228. system_i386_embedded_info : tsysteminfo =
  229. (
  230. system : system_i386_embedded;
  231. name : 'Embedded';
  232. shortname : 'embedded';
  233. flags : [tf_needs_symbol_size,tf_files_case_sensitive,
  234. tf_smartlink_sections];
  235. cpu : cpu_i386;
  236. unit_env : '';
  237. extradefines : '';
  238. exeext : '';
  239. defext : '.def';
  240. scriptext : '.sh';
  241. smartext : '.sl';
  242. unitext : '.ppu';
  243. unitlibext : '.ppl';
  244. asmext : '.s';
  245. objext : '.o';
  246. resext : '.res';
  247. resobjext : '.or';
  248. sharedlibext : '.so';
  249. staticlibext : '.a';
  250. staticlibprefix : 'libp';
  251. sharedlibprefix : 'lib';
  252. sharedClibext : '.so';
  253. staticClibext : '.a';
  254. staticClibprefix : 'lib';
  255. sharedClibprefix : 'lib';
  256. importlibprefix : 'libimp';
  257. importlibext : '.a';
  258. Cprefix : '';
  259. newline : #10;
  260. dirsep : '/';
  261. assem : as_i386_elf32;
  262. assemextern : as_gas;
  263. link : ld_none;
  264. linkextern : ld_embedded;
  265. ar : ar_gnu_ar;
  266. res : res_none;
  267. dbg : dbg_stabs;
  268. script : script_unix;
  269. endian : endian_little;
  270. alignment :
  271. (
  272. procalign : 16;
  273. loopalign : 4;
  274. jumpalign : 0;
  275. jumpalignskipmax : 0;
  276. coalescealign : 0;
  277. coalescealignskipmax: 0;
  278. constalignmin : 0;
  279. constalignmax : 16;
  280. varalignmin : 0;
  281. varalignmax : 16;
  282. localalignmin : 4;
  283. localalignmax : 8;
  284. recordalignmin : 0;
  285. recordalignmax : 16;
  286. maxCrecordalign : 4
  287. );
  288. first_parm_offset : 8;
  289. stacksize : 4096;
  290. stackalign : 4;
  291. abi : abi_default;
  292. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32';
  293. );
  294. system_x86_64_embedded_info : tsysteminfo =
  295. (
  296. system : system_x86_64_embedded;
  297. name : 'Embedded';
  298. shortname : 'embedded';
  299. flags : [tf_needs_symbol_size,tf_files_case_sensitive,
  300. tf_smartlink_sections];
  301. cpu : cpu_x86_64;
  302. unit_env : '';
  303. extradefines : '';
  304. exeext : '';
  305. defext : '.def';
  306. scriptext : '.sh';
  307. smartext : '.sl';
  308. unitext : '.ppu';
  309. unitlibext : '.ppl';
  310. asmext : '.s';
  311. objext : '.o';
  312. resext : '.res';
  313. resobjext : '.or';
  314. sharedlibext : '.so';
  315. staticlibext : '.a';
  316. staticlibprefix : 'libp';
  317. sharedlibprefix : 'lib';
  318. sharedClibext : '.so';
  319. staticClibext : '.a';
  320. staticClibprefix : 'lib';
  321. sharedClibprefix : 'lib';
  322. importlibprefix : 'libimp';
  323. importlibext : '.a';
  324. Cprefix : '';
  325. newline : #10;
  326. dirsep : '/';
  327. assem : as_x86_64_elf64;
  328. assemextern : as_gas;
  329. link : ld_none;
  330. linkextern : ld_embedded;
  331. ar : ar_gnu_ar;
  332. res : res_none;
  333. dbg : dbg_stabs;
  334. script : script_unix;
  335. endian : endian_little;
  336. alignment :
  337. (
  338. procalign : 16;
  339. loopalign : 8;
  340. jumpalign : 0;
  341. jumpalignskipmax : 0;
  342. coalescealign : 0;
  343. coalescealignskipmax: 0;
  344. constalignmin : 0;
  345. constalignmax : 16;
  346. varalignmin : 0;
  347. varalignmax : 16;
  348. localalignmin : 4;
  349. localalignmax : 16;
  350. recordalignmin : 0;
  351. recordalignmax : 16;
  352. maxCrecordalign : 16
  353. );
  354. first_parm_offset : 16;
  355. stacksize : 8*1024*1024;
  356. stackalign : 16;
  357. abi : abi_default;
  358. llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
  359. );
  360. system_i8086_embedded_info : tsysteminfo =
  361. (
  362. system : system_i8086_embedded;
  363. name : 'Embedded';
  364. shortname : 'embedded';
  365. flags : [tf_use_8_3,
  366. {$ifdef I8086_SMARTLINK_SECTIONS}
  367. tf_smartlink_sections,
  368. {$else I8086_SMARTLINK_SECTIONS}
  369. tf_smartlink_library,
  370. tf_no_objectfiles_when_smartlinking,
  371. {$endif I8086_SMARTLINK_SECTIONS}
  372. tf_cld,
  373. tf_no_generic_stackcheck,tf_emit_stklen];
  374. cpu : cpu_i8086;
  375. unit_env : '';
  376. extradefines : '';
  377. exeext : '.exe';
  378. defext : '.def';
  379. scriptext : '.bat';
  380. smartext : '.sl';
  381. unitext : '.ppu';
  382. unitlibext : '.ppl';
  383. asmext : '.s';
  384. objext : '.o';
  385. resext : '.res';
  386. resobjext : '.or';
  387. sharedlibext : '.dll';
  388. staticlibext : '.a';
  389. staticlibprefix : '';
  390. sharedlibprefix : '';
  391. sharedClibext : '.dll';
  392. staticClibext : '.a';
  393. staticClibprefix : 'lib';
  394. sharedClibprefix : '';
  395. importlibprefix : '';
  396. importlibext : '.al';
  397. Cprefix : '_';
  398. newline : #13#10;
  399. dirsep : '\';
  400. assem : as_i8086_omf;
  401. assemextern : as_i8086_nasmobj;
  402. link : ld_int_msdos;
  403. linkextern : ld_msdos;
  404. {$ifdef USE_SCRIPTED_WLIB}
  405. ar : ar_watcom_wlib_omf_scripted;
  406. {$else}
  407. ar : ar_watcom_wlib_omf;
  408. {$endif}
  409. res : res_none;
  410. dbg : dbg_dwarf2;
  411. script : script_dos;
  412. endian : endian_little;
  413. alignment :
  414. (
  415. procalign : 1;
  416. loopalign : 1;
  417. jumpalign : 0;
  418. jumpalignskipmax : 0;
  419. coalescealign : 0;
  420. coalescealignskipmax: 0;
  421. constalignmin : 0;
  422. constalignmax : 2;
  423. varalignmin : 0;
  424. varalignmax : 2;
  425. localalignmin : 0;
  426. localalignmax : 2;
  427. recordalignmin : 0;
  428. recordalignmax : 2;
  429. maxCrecordalign : 2
  430. );
  431. first_parm_offset : 4;
  432. stacksize : 0;
  433. stackalign : 2;
  434. abi : abi_default;
  435. llvmdatalayout : 'todo';
  436. );
  437. system_m68k_embedded_info : tsysteminfo =
  438. (
  439. system : system_m68k_embedded;
  440. name : 'Embedded';
  441. shortname : 'embedded';
  442. flags : [tf_under_development,tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  443. tf_smartlink_sections];
  444. cpu : cpu_m68k;
  445. unit_env : '';
  446. extradefines : '';
  447. exeext : '';
  448. defext : '.def';
  449. scriptext : '.sh';
  450. smartext : '.sl';
  451. unitext : '.ppu';
  452. unitlibext : '.ppl';
  453. asmext : '.s';
  454. objext : '.o';
  455. resext : '.res';
  456. resobjext : '.or';
  457. sharedlibext : '.so';
  458. staticlibext : '.a';
  459. staticlibprefix : 'libp';
  460. sharedlibprefix : 'lib';
  461. sharedClibext : '.so';
  462. staticClibext : '.a';
  463. staticClibprefix : 'lib';
  464. sharedClibprefix : 'lib';
  465. importlibprefix : 'libimp';
  466. importlibext : '.a';
  467. Cprefix : '';
  468. newline : #10;
  469. dirsep : '/';
  470. assem : as_gas;
  471. assemextern : as_gas;
  472. link : ld_none;
  473. linkextern : ld_embedded;
  474. ar : ar_gnu_ar;
  475. res : res_none;
  476. dbg : dbg_dwarf2;
  477. script : script_unix;
  478. endian : endian_big;
  479. alignment :
  480. (
  481. procalign : 4;
  482. loopalign : 4;
  483. jumpalign : 0;
  484. jumpalignskipmax : 0;
  485. coalescealign : 0;
  486. coalescealignskipmax: 0;
  487. constalignmin : 0;
  488. constalignmax : 4;
  489. varalignmin : 0;
  490. varalignmax : 4;
  491. localalignmin : 4;
  492. localalignmax : 4;
  493. recordalignmin : 0;
  494. recordalignmax : 4;
  495. maxCrecordalign : 4
  496. );
  497. first_parm_offset : 8;
  498. stacksize : 32768;
  499. stackalign : 4;
  500. abi : abi_default;
  501. llvmdatalayout : 'TODO';
  502. );
  503. system_riscv32_embedded_info : tsysteminfo =
  504. (
  505. system : system_riscv32_embedded;
  506. name : 'Embedded';
  507. shortname : 'embedded';
  508. flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  509. tf_smartlink_sections];
  510. cpu : cpu_riscv32;
  511. unit_env : '';
  512. extradefines : '';
  513. exeext : '';
  514. defext : '.def';
  515. scriptext : '.sh';
  516. smartext : '.sl';
  517. unitext : '.ppu';
  518. unitlibext : '.ppl';
  519. asmext : '.s';
  520. objext : '.o';
  521. resext : '.res';
  522. resobjext : '.or';
  523. sharedlibext : '.so';
  524. staticlibext : '.a';
  525. staticlibprefix : 'libp';
  526. sharedlibprefix : 'lib';
  527. sharedClibext : '.so';
  528. staticClibext : '.a';
  529. staticClibprefix : 'lib';
  530. sharedClibprefix : 'lib';
  531. importlibprefix : 'libimp';
  532. importlibext : '.a';
  533. Cprefix : '';
  534. newline : #10;
  535. dirsep : '/';
  536. assem : as_gas;
  537. assemextern : as_gas;
  538. link : ld_none;
  539. linkextern : ld_embedded;
  540. ar : ar_gnu_ar;
  541. res : res_none;
  542. dbg : dbg_dwarf2;
  543. script : script_unix;
  544. endian : endian_little;
  545. alignment :
  546. (
  547. procalign : 4;
  548. loopalign : 4;
  549. jumpalign : 0;
  550. jumpalignskipmax : 0;
  551. coalescealign : 0;
  552. coalescealignskipmax: 0;
  553. constalignmin : 0;
  554. constalignmax : 4;
  555. varalignmin : 0;
  556. varalignmax : 4;
  557. localalignmin : 4;
  558. localalignmax : 4;
  559. recordalignmin : 0;
  560. recordalignmax : 4;
  561. maxCrecordalign : 4
  562. );
  563. first_parm_offset : 8;
  564. stacksize : 262144;
  565. stackalign : 4;
  566. abi : abi_default;
  567. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  568. );
  569. system_riscv64_embedded_info : tsysteminfo =
  570. (
  571. system : system_riscv64_embedded;
  572. name : 'Embedded';
  573. shortname : 'embedded';
  574. flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  575. tf_smartlink_sections];
  576. cpu : cpu_riscv64;
  577. unit_env : '';
  578. extradefines : '';
  579. exeext : '';
  580. defext : '.def';
  581. scriptext : '.sh';
  582. smartext : '.sl';
  583. unitext : '.ppu';
  584. unitlibext : '.ppl';
  585. asmext : '.s';
  586. objext : '.o';
  587. resext : '.res';
  588. resobjext : '.or';
  589. sharedlibext : '.so';
  590. staticlibext : '.a';
  591. staticlibprefix : 'libp';
  592. sharedlibprefix : 'lib';
  593. sharedClibext : '.so';
  594. staticClibext : '.a';
  595. staticClibprefix : 'lib';
  596. sharedClibprefix : 'lib';
  597. importlibprefix : 'libimp';
  598. importlibext : '.a';
  599. Cprefix : '';
  600. newline : #10;
  601. dirsep : '/';
  602. assem : as_gas;
  603. assemextern : as_gas;
  604. link : ld_none;
  605. linkextern : ld_embedded;
  606. ar : ar_gnu_ar;
  607. res : res_none;
  608. dbg : dbg_dwarf2;
  609. script : script_unix;
  610. endian : endian_little;
  611. alignment :
  612. (
  613. procalign : 4;
  614. loopalign : 4;
  615. jumpalign : 0;
  616. jumpalignskipmax : 0;
  617. coalescealign : 0;
  618. coalescealignskipmax: 0;
  619. constalignmin : 0;
  620. constalignmax : 4;
  621. varalignmin : 0;
  622. varalignmax : 4;
  623. localalignmin : 4;
  624. localalignmax : 4;
  625. recordalignmin : 0;
  626. recordalignmax : 4;
  627. maxCrecordalign : 4
  628. );
  629. first_parm_offset : 16;
  630. stacksize : 262144;
  631. stackalign : 8;
  632. abi : abi_default;
  633. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  634. );
  635. {$endif dummy}
  636. system_xtensa_freertos_info : tsysteminfo =
  637. (
  638. system : system_xtensa_freertos;
  639. name : 'FreeRTOS';
  640. shortname : 'freertos';
  641. flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  642. tf_smartlink_sections,tf_init_final_units_by_calls];
  643. cpu : cpu_xtensa;
  644. unit_env : '';
  645. extradefines : '';
  646. exeext : '';
  647. defext : '.def';
  648. scriptext : '.sh';
  649. smartext : '.sl';
  650. unitext : '.ppu';
  651. unitlibext : '.ppl';
  652. asmext : '.s';
  653. objext : '.o';
  654. resext : '.res';
  655. resobjext : '.or';
  656. sharedlibext : '.so';
  657. staticlibext : '.a';
  658. staticlibprefix : 'libp';
  659. sharedlibprefix : 'lib';
  660. sharedClibext : '.so';
  661. staticClibext : '.a';
  662. staticClibprefix : 'lib';
  663. sharedClibprefix : 'lib';
  664. importlibprefix : 'libimp';
  665. importlibext : '.a';
  666. Cprefix : '';
  667. newline : #10;
  668. dirsep : '/';
  669. assem : as_gas;
  670. assemextern : as_gas;
  671. link : ld_none;
  672. linkextern : ld_freertos;
  673. ar : ar_gnu_ar;
  674. res : res_none;
  675. dbg : dbg_dwarf2;
  676. script : script_unix;
  677. endian : endian_little;
  678. alignment :
  679. (
  680. procalign : 4;
  681. loopalign : 4;
  682. jumpalign : 0;
  683. jumpalignskipmax : 0;
  684. coalescealign : 0;
  685. coalescealignskipmax: 0;
  686. constalignmin : 0;
  687. constalignmax : 4;
  688. varalignmin : 0;
  689. varalignmax : 4;
  690. localalignmin : 4;
  691. localalignmax : 16;
  692. recordalignmin : 0;
  693. recordalignmax : 8;
  694. maxCrecordalign : 8
  695. );
  696. first_parm_offset : 8;
  697. stacksize : 65536;
  698. stackalign : 16;
  699. abi : abi_xtensa_windowed;
  700. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  701. );
  702. system_arm_freertos_info : tsysteminfo =
  703. (
  704. system : system_arm_freertos;
  705. name : 'FreeRTOS';
  706. shortname : 'freertos';
  707. flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_requires_proper_alignment,
  708. tf_smartlink_sections,tf_init_final_units_by_calls];
  709. cpu : cpu_arm;
  710. unit_env : '';
  711. extradefines : '';
  712. exeext : '';
  713. defext : '.def';
  714. scriptext : '.sh';
  715. smartext : '.sl';
  716. unitext : '.ppu';
  717. unitlibext : '.ppl';
  718. asmext : '.s';
  719. objext : '.o';
  720. resext : '.res';
  721. resobjext : '.or';
  722. sharedlibext : '.so';
  723. staticlibext : '.a';
  724. staticlibprefix : 'libp';
  725. sharedlibprefix : 'lib';
  726. sharedClibext : '.so';
  727. staticClibext : '.a';
  728. staticClibprefix : 'lib';
  729. sharedClibprefix : 'lib';
  730. importlibprefix : 'libimp';
  731. importlibext : '.a';
  732. Cprefix : '';
  733. newline : #10;
  734. dirsep : '/';
  735. assem : as_gas;
  736. assemextern : as_gas;
  737. link : ld_none;
  738. linkextern : ld_freertos;
  739. ar : ar_gnu_ar;
  740. res : res_none;
  741. dbg : dbg_dwarf2;
  742. script : script_unix;
  743. endian : endian_little;
  744. alignment :
  745. (
  746. procalign : 4;
  747. loopalign : 4;
  748. jumpalign : 0;
  749. jumpalignskipmax : 0;
  750. coalescealign : 0;
  751. coalescealignskipmax: 0;
  752. constalignmin : 0;
  753. constalignmax : 4;
  754. varalignmin : 0;
  755. varalignmax : 4;
  756. localalignmin : 4;
  757. localalignmax : 16;
  758. recordalignmin : 0;
  759. recordalignmax : 4;
  760. maxCrecordalign : 4
  761. );
  762. first_parm_offset : 8;
  763. stacksize : 65536;
  764. stackalign : 16;
  765. abi : abi_default;
  766. llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:64-n32-S32';
  767. );
  768. implementation
  769. initialization
  770. {$ifdef CPUARM}
  771. {$ifdef embedded}
  772. set_source_info(system_arm_freertos_info);
  773. {$endif embedded}
  774. {$endif CPUARM}
  775. {$ifdef CPUAVR}
  776. {$ifdef embedded}
  777. set_source_info(system_avr_freertosd_info);
  778. {$endif embedded}
  779. {$endif CPUAVR}
  780. {$ifdef CPUMIPSEL}
  781. {$ifdef embedded}
  782. set_source_info(system_mipsel_freertos_info);
  783. {$endif embedded}
  784. {$endif CPUMIPSEL}
  785. {$ifdef CPUI386}
  786. {$ifdef embedded}
  787. set_source_info(system_i386_freertos_info);
  788. {$endif embedded}
  789. {$endif CPUI386}
  790. {$ifdef CPUX86_64}
  791. {$ifdef embedded}
  792. set_source_info(system_x86_64_freertos_info);
  793. {$endif embedded}
  794. {$endif CPUX86_64}
  795. {$ifdef cpu8086}
  796. {$ifdef embedded}
  797. set_source_info(system_i8086_freertos_info);
  798. {$endif embedded}
  799. {$endif cpu8086}
  800. {$ifdef cpum68k}
  801. {$ifdef embedded}
  802. set_source_info(system_m68k_freertos_info);
  803. {$endif embedded}
  804. {$endif cpum68k}
  805. {$ifdef cpuriscv32}
  806. {$ifdef embedded}
  807. set_source_info(system_riscv32_freertos_info);
  808. {$endif embedded}
  809. {$endif cpuriscv32}
  810. {$ifdef cpuriscv64}
  811. {$ifdef embedded}
  812. set_source_info(system_riscv64_freertos_info);
  813. {$endif embedded}
  814. {$endif cpuriscv64}
  815. {$ifdef cpuxtensa}
  816. {$ifdef embedded}
  817. set_source_info(system_xtensa_freertos_info);
  818. {$endif embedded}
  819. {$endif cpuxtensa}
  820. end.