pw_thread_freertos: Use TCB for running stack pointer

For RiscV where there's only one stack pointer used, when an exception
happens, the TCB for the running thread won't be stale as the state is
saved in TCB.

Testing:
See the Running thread stack match MEPC

Change-Id: Iee7f95cb8a7057060a296bdb77754a2326edc699
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/188231
Pigweed-Auto-Submit: Kevin Zeng <zengk@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed-service-accounts.iam.gserviceaccount.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
3 files changed
tree: fbbbf04176a0794567b0d6238b91757f63da7379
  1. .allstar/
  2. .vscode/
  3. build_overrides/
  4. docker/
  5. docs/
  6. kudzu/
  7. pw_alignment/
  8. pw_allocator/
  9. pw_analog/
  10. pw_android_toolchain/
  11. pw_arduino_build/
  12. pw_assert/
  13. pw_assert_basic/
  14. pw_assert_log/
  15. pw_assert_tokenized/
  16. pw_assert_zephyr/
  17. pw_async/
  18. pw_async2/
  19. pw_async2_basic/
  20. pw_async2_epoll/
  21. pw_async_basic/
  22. pw_base64/
  23. pw_bloat/
  24. pw_blob_store/
  25. pw_bluetooth/
  26. pw_bluetooth_hci/
  27. pw_bluetooth_profiles/
  28. pw_bluetooth_proxy/
  29. pw_bluetooth_sapphire/
  30. pw_boot/
  31. pw_boot_cortex_m/
  32. pw_build/
  33. pw_build_android/
  34. pw_build_info/
  35. pw_build_mcuxpresso/
  36. pw_bytes/
  37. pw_channel/
  38. pw_checksum/
  39. pw_chre/
  40. pw_chrono/
  41. pw_chrono_embos/
  42. pw_chrono_freertos/
  43. pw_chrono_rp2040/
  44. pw_chrono_stl/
  45. pw_chrono_threadx/
  46. pw_chrono_zephyr/
  47. pw_cli/
  48. pw_compilation_testing/
  49. pw_config_loader/
  50. pw_console/
  51. pw_containers/
  52. pw_cpu_exception/
  53. pw_cpu_exception_cortex_m/
  54. pw_cpu_exception_risc_v/
  55. pw_crypto/
  56. pw_digital_io/
  57. pw_digital_io_linux/
  58. pw_digital_io_mcuxpresso/
  59. pw_digital_io_rp2040/
  60. pw_docgen/
  61. pw_doctor/
  62. pw_emu/
  63. pw_env_setup/
  64. pw_env_setup_zephyr/
  65. pw_file/
  66. pw_format/
  67. pw_function/
  68. pw_fuzzer/
  69. pw_grpc/
  70. pw_hdlc/
  71. pw_hex_dump/
  72. pw_i2c/
  73. pw_i2c_linux/
  74. pw_i2c_mcuxpresso/
  75. pw_i2c_rp2040/
  76. pw_ide/
  77. pw_interrupt/
  78. pw_interrupt_cortex_m/
  79. pw_interrupt_xtensa/
  80. pw_interrupt_zephyr/
  81. pw_intrusive_ptr/
  82. pw_json/
  83. pw_kvs/
  84. pw_libc/
  85. pw_libcxx/
  86. pw_log/
  87. pw_log_android/
  88. pw_log_basic/
  89. pw_log_null/
  90. pw_log_rpc/
  91. pw_log_string/
  92. pw_log_tokenized/
  93. pw_log_zephyr/
  94. pw_malloc/
  95. pw_malloc_freelist/
  96. pw_malloc_freertos/
  97. pw_metric/
  98. pw_minimal_cpp_stdlib/
  99. pw_module/
  100. pw_multibuf/
  101. pw_multisink/
  102. pw_package/
  103. pw_perf_test/
  104. pw_persistent_ram/
  105. pw_polyfill/
  106. pw_preprocessor/
  107. pw_presubmit/
  108. pw_protobuf/
  109. pw_protobuf_compiler/
  110. pw_random/
  111. pw_result/
  112. pw_ring_buffer/
  113. pw_router/
  114. pw_rpc/
  115. pw_rpc_transport/
  116. pw_rust/
  117. pw_sensor/
  118. pw_snapshot/
  119. pw_software_update/
  120. pw_span/
  121. pw_spi/
  122. pw_spi_linux/
  123. pw_spi_mcuxpresso/
  124. pw_spi_rp2040/
  125. pw_status/
  126. pw_stm32cube_build/
  127. pw_stream/
  128. pw_stream_shmem_mcuxpresso/
  129. pw_stream_uart_linux/
  130. pw_stream_uart_mcuxpresso/
  131. pw_string/
  132. pw_symbolizer/
  133. pw_sync/
  134. pw_sync_baremetal/
  135. pw_sync_embos/
  136. pw_sync_freertos/
  137. pw_sync_stl/
  138. pw_sync_threadx/
  139. pw_sync_zephyr/
  140. pw_sys_io/
  141. pw_sys_io_ambiq_sdk/
  142. pw_sys_io_arduino/
  143. pw_sys_io_baremetal_lm3s6965evb/
  144. pw_sys_io_baremetal_stm32f429/
  145. pw_sys_io_emcraft_sf2/
  146. pw_sys_io_mcuxpresso/
  147. pw_sys_io_rp2040/
  148. pw_sys_io_stdio/
  149. pw_sys_io_stm32cube/
  150. pw_sys_io_zephyr/
  151. pw_system/
  152. pw_target_runner/
  153. pw_thread/
  154. pw_thread_embos/
  155. pw_thread_freertos/
  156. pw_thread_stl/
  157. pw_thread_threadx/
  158. pw_thread_zephyr/
  159. pw_tls_client/
  160. pw_tls_client_boringssl/
  161. pw_tls_client_mbedtls/
  162. pw_tokenizer/
  163. pw_toolchain/
  164. pw_toolchain_bazel/
  165. pw_trace/
  166. pw_trace_tokenized/
  167. pw_transfer/
  168. pw_uart/
  169. pw_unit_test/
  170. pw_unit_test_zephyr/
  171. pw_varint/
  172. pw_watch/
  173. pw_web/
  174. pw_work_queue/
  175. seed/
  176. targets/
  177. third_party/
  178. ts/
  179. zephyr/
  180. .bazelignore
  181. .bazelrc
  182. .black.toml
  183. .clang-format
  184. .clang-tidy
  185. .eslintrc.cjs
  186. .git-blame-ignore-revs
  187. .gitattributes
  188. .gitignore
  189. .gn
  190. .mypy.ini
  191. .prettierignore
  192. .prettierrc.cjs
  193. .pw_ide.yaml
  194. .pylintrc
  195. activate.bat
  196. Android.bp
  197. AUTHORS
  198. bootstrap.bat
  199. bootstrap.sh
  200. BUILD.bazel
  201. BUILD.gn
  202. BUILDCONFIG.gn
  203. CMakeLists.txt
  204. jest.config.ts
  205. Kconfig.zephyr
  206. LICENSE
  207. modules.gni
  208. OWNERS
  209. package-lock.json
  210. package.json
  211. pigweed.json
  212. PIGWEED_MODULES
  213. README.md
  214. rollup.config.js
  215. tsconfig.json
  216. WORKSPACE
README.md

Pigweed

Pigweed is an open source collection of embedded-targeted libraries–or as we like to call them, modules. These modules are building blocks and infrastructure that enable faster and more reliable development on small-footprint MMU-less 32-bit microcontrollers like the STMicroelectronics STM32L452 or the Nordic nRF52832.

For more information please see our website: https://pigweed.dev/.

Links