port__m33_8h.xml 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?xml version='1.0' encoding='UTF-8' standalone='no'?>
  2. <doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.18.0" xml:lang="ja">
  3. <compounddef id="port__m33_8h" kind="file" language="C++">
  4. <compoundname>port_m33.h</compoundname>
  5. <includes local="no">stdint.h</includes>
  6. <includes local="yes">hardware/structs/scb.h</includes>
  7. <includedby refid="port__m33_8c" local="yes">C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.c</includedby>
  8. <includedby refid="scheduler_8cpp" local="yes">C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/scheduler.cpp</includedby>
  9. <incdepgraph>
  10. <node id="1">
  11. <label>C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h</label>
  12. <link refid="port__m33_8h"/>
  13. <childnode refid="2" relation="include">
  14. </childnode>
  15. <childnode refid="3" relation="include">
  16. </childnode>
  17. </node>
  18. <node id="3">
  19. <label>hardware/structs/scb.h</label>
  20. </node>
  21. <node id="2">
  22. <label>stdint.h</label>
  23. </node>
  24. </incdepgraph>
  25. <invincdepgraph>
  26. <node id="2">
  27. <label>C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.c</label>
  28. <link refid="port__m33_8c"/>
  29. </node>
  30. <node id="1">
  31. <label>C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h</label>
  32. <link refid="port__m33_8h"/>
  33. <childnode refid="2" relation="include">
  34. </childnode>
  35. <childnode refid="3" relation="include">
  36. </childnode>
  37. </node>
  38. <node id="3">
  39. <label>C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/scheduler.cpp</label>
  40. <link refid="scheduler_8cpp"/>
  41. </node>
  42. </invincdepgraph>
  43. <sectiondef kind="func">
  44. <memberdef kind="function" id="port__m33_8h_1ac9d435a65b90e71074dd44f97b1103f8" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
  45. <type>void</type>
  46. <definition>void tk_port_init</definition>
  47. <argsstring>(uint32_t ticks_per_sec)</argsstring>
  48. <name>tk_port_init</name>
  49. <param>
  50. <type>uint32_t</type>
  51. <declname>ticks_per_sec</declname>
  52. </param>
  53. <briefdescription>
  54. </briefdescription>
  55. <detaileddescription>
  56. </detaileddescription>
  57. <inbodydescription>
  58. </inbodydescription>
  59. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" line="12" column="6" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.c" bodystart="14" bodyend="36" declfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" declline="12" declcolumn="6"/>
  60. </memberdef>
  61. <memberdef kind="function" id="port__m33_8h_1a57df28e1d96b701ef5b9713cae179462" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
  62. <type>uintptr_t</type>
  63. <definition>uintptr_t tk_port_make_frame</definition>
  64. <argsstring>(uint8_t *base, uint32_t size_bytes, void *entry_fn, void *arg)</argsstring>
  65. <name>tk_port_make_frame</name>
  66. <param>
  67. <type>uint8_t *</type>
  68. <declname>base</declname>
  69. </param>
  70. <param>
  71. <type>uint32_t</type>
  72. <declname>size_bytes</declname>
  73. </param>
  74. <param>
  75. <type>void *</type>
  76. <declname>entry_fn</declname>
  77. </param>
  78. <param>
  79. <type>void *</type>
  80. <declname>arg</declname>
  81. </param>
  82. <briefdescription>
  83. </briefdescription>
  84. <detaileddescription>
  85. </detaileddescription>
  86. <inbodydescription>
  87. </inbodydescription>
  88. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" line="15" column="11" declfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" declline="15" declcolumn="11"/>
  89. </memberdef>
  90. <memberdef kind="function" id="port__m33_8h_1aaf06c4f2c498c86ed2c595d9bfe4caab" prot="public" static="no" const="no" explicit="no" inline="no" virt="non-virtual">
  91. <type>void</type>
  92. <definition>void tk_port_start</definition>
  93. <argsstring>(uintptr_t sp)</argsstring>
  94. <name>tk_port_start</name>
  95. <param>
  96. <type>uintptr_t</type>
  97. <declname>sp</declname>
  98. </param>
  99. <briefdescription>
  100. </briefdescription>
  101. <detaileddescription>
  102. </detaileddescription>
  103. <inbodydescription>
  104. </inbodydescription>
  105. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" line="18" column="6" declfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" declline="18" declcolumn="6"/>
  106. </memberdef>
  107. <memberdef kind="function" id="port__m33_8h_1a3990f2a1d17ff136ea16aab63b670a7e" prot="public" static="yes" const="no" explicit="no" inline="yes" virt="non-virtual">
  108. <type>void</type>
  109. <definition>static void tk_port_trigger_pendsv</definition>
  110. <argsstring>(void)</argsstring>
  111. <name>tk_port_trigger_pendsv</name>
  112. <param>
  113. <type>void</type>
  114. </param>
  115. <briefdescription>
  116. </briefdescription>
  117. <detaileddescription>
  118. </detaileddescription>
  119. <inbodydescription>
  120. </inbodydescription>
  121. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" line="21" column="20" bodyfile="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h" bodystart="21" bodyend="24"/>
  122. </memberdef>
  123. </sectiondef>
  124. <briefdescription>
  125. </briefdescription>
  126. <detaileddescription>
  127. </detaileddescription>
  128. <programlisting>
  129. <codeline lineno="1"><highlight class="preprocessor">#pragma<sp/>once</highlight><highlight class="normal"></highlight></codeline>
  130. <codeline lineno="2"><highlight class="normal"></highlight></codeline>
  131. <codeline lineno="3"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&lt;stdint.h&gt;</highlight><highlight class="normal"></highlight></codeline>
  132. <codeline lineno="4"><highlight class="normal"></highlight></codeline>
  133. <codeline lineno="5"><highlight class="normal"></highlight><highlight class="preprocessor">#include<sp/>&quot;hardware/structs/scb.h&quot;</highlight><highlight class="normal"></highlight></codeline>
  134. <codeline lineno="6"><highlight class="normal"></highlight></codeline>
  135. <codeline lineno="7"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>__cplusplus</highlight><highlight class="normal"></highlight></codeline>
  136. <codeline lineno="8"><highlight class="normal"></highlight><highlight class="keyword">extern</highlight><highlight class="normal"><sp/></highlight><highlight class="stringliteral">&quot;C&quot;</highlight><highlight class="normal"><sp/>{</highlight></codeline>
  137. <codeline lineno="9"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight><highlight class="normal"></highlight></codeline>
  138. <codeline lineno="10"><highlight class="normal"></highlight></codeline>
  139. <codeline lineno="11"><highlight class="normal"></highlight><highlight class="comment">//<sp/>One-time<sp/>port<sp/>setup:<sp/>FPU<sp/>context<sp/>policy<sp/>+<sp/>SysTick<sp/>+<sp/>PendSV<sp/>priority.<sp/>Called<sp/>from<sp/>tk::start().</highlight><highlight class="normal"></highlight></codeline>
  140. <codeline lineno="12"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="port__m33_8c_1ac9d435a65b90e71074dd44f97b1103f8" kindref="member">tk_port_init</ref>(uint32_t<sp/>ticks_per_sec);</highlight></codeline>
  141. <codeline lineno="13"><highlight class="normal"></highlight></codeline>
  142. <codeline lineno="14"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Build<sp/>a<sp/>task&apos;s<sp/>initial<sp/>stack<sp/>frame.<sp/>Returns<sp/>the<sp/>SP<sp/>to<sp/>start<sp/>with.</highlight><highlight class="normal"></highlight></codeline>
  143. <codeline lineno="15" refid="port__m33_8h_1a57df28e1d96b701ef5b9713cae179462" refkind="member"><highlight class="normal">uintptr_t<sp/><ref refid="port__m33_8h_1a57df28e1d96b701ef5b9713cae179462" kindref="member">tk_port_make_frame</ref>(uint8_t*<sp/>base,<sp/>uint32_t<sp/>size_bytes,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>entry_fn,<sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal">*<sp/>arg);</highlight></codeline>
  144. <codeline lineno="16"><highlight class="normal"></highlight></codeline>
  145. <codeline lineno="17"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Jump<sp/>into<sp/>the<sp/>first<sp/>task<sp/>(r0<sp/>=<sp/>SP<sp/>from<sp/>tk_port_make_frame).<sp/>Never<sp/>returns.</highlight><highlight class="normal"></highlight></codeline>
  146. <codeline lineno="18" refid="port__m33_8h_1aaf06c4f2c498c86ed2c595d9bfe4caab" refkind="member"><highlight class="normal"></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/><ref refid="port__m33_8h_1aaf06c4f2c498c86ed2c595d9bfe4caab" kindref="member">tk_port_start</ref>(uintptr_t<sp/>sp);</highlight></codeline>
  147. <codeline lineno="19"><highlight class="normal"></highlight></codeline>
  148. <codeline lineno="20"><highlight class="normal"></highlight><highlight class="comment">//<sp/>Trigger<sp/>a<sp/>PendSV<sp/>exception<sp/>to<sp/>initiate<sp/>context<sp/>switching.</highlight><highlight class="normal"></highlight></codeline>
  149. <codeline lineno="21"><highlight class="normal"></highlight><highlight class="keyword">static</highlight><highlight class="normal"><sp/></highlight><highlight class="keyword">inline</highlight><highlight class="normal"><sp/></highlight><highlight class="keywordtype">void</highlight><highlight class="normal"><sp/>tk_port_trigger_pendsv(</highlight><highlight class="keywordtype">void</highlight><highlight class="normal">)<sp/>{</highlight></codeline>
  150. <codeline lineno="22"><highlight class="normal"><sp/><sp/><sp/><sp/>scb_hw-&gt;icsr<sp/>=<sp/>1u<sp/>&lt;&lt;<sp/>28;<sp/><sp/></highlight><highlight class="comment">//<sp/>SCB_ICSR_PENDSVSET_Msk</highlight><highlight class="normal"></highlight></codeline>
  151. <codeline lineno="23"><highlight class="normal"><sp/><sp/><sp/><sp/>__asm__<sp/></highlight><highlight class="keyword">volatile</highlight><highlight class="normal">(</highlight><highlight class="stringliteral">&quot;isb&quot;</highlight><highlight class="normal"><sp/>:::<sp/></highlight><highlight class="stringliteral">&quot;memory&quot;</highlight><highlight class="normal">);</highlight></codeline>
  152. <codeline lineno="24"><highlight class="normal">}</highlight></codeline>
  153. <codeline lineno="25"><highlight class="normal"></highlight></codeline>
  154. <codeline lineno="26"><highlight class="normal"></highlight><highlight class="preprocessor">#ifdef<sp/>__cplusplus</highlight><highlight class="normal"></highlight></codeline>
  155. <codeline lineno="27"><highlight class="normal">}</highlight></codeline>
  156. <codeline lineno="28"><highlight class="normal"></highlight><highlight class="preprocessor">#endif</highlight></codeline>
  157. </programlisting>
  158. <location file="C:/Users/yoneda/Documents/Pico_Projects/tinykernel/tinykernel/src/port/m33/port_m33.h"/>
  159. </compounddef>
  160. </doxygen>