aboutsummaryrefslogtreecommitdiff
path: root/boot/symbol.cc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-09-14 21:11:03 +0200
committerEugen Wissner <belka@caraus.de>2026-09-14 21:11:03 +0200
commit52c8ca2c06da93c8d14e80a256e8996c1fa1e885 (patch)
tree3579cffe682bb2d2270e5d892f26ae3c197880e6 /boot/symbol.cc
parent49e6a0518eb6b7b09938b562ef270028337508bf (diff)
downloadelna-52c8ca2c06da93c8d14e80a256e8996c1fa1e885.tar.gz
Implement volatile operations
Diffstat (limited to 'boot/symbol.cc')
-rw-r--r--boot/symbol.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/boot/symbol.cc b/boot/symbol.cc
index 466715b..55f91ea 100644
--- a/boot/symbol.cc
+++ b/boot/symbol.cc
@@ -401,6 +401,24 @@ namespace elna::boot
std::vector<std::string>{ "condition" });
result->enter("assert", assert_info);
+ const type load_parameter = type(std::make_shared<parameter_type>("T"));
+ procedure_type volatile_load_symbol{ procedure_type::return_t(load_parameter) };
+ volatile_load_symbol.parameters.emplace_back(std::make_shared<pointer_type>(load_parameter));
+ std::shared_ptr<procedure_info> const volatile_load_info =
+ std::make_shared<procedure_info>(volatile_load_symbol, std::vector<std::string>{ "source" });
+ volatile_load_info->parameters.push_back(load_parameter);
+ result->enter("volatile_load", volatile_load_info);
+
+ const type store_parameter = type(std::make_shared<parameter_type>("T"));
+ procedure_type volatile_store_symbol{ procedure_type::return_t() };
+ volatile_store_symbol.parameters.emplace_back(std::make_shared<pointer_type>(store_parameter));
+ volatile_store_symbol.parameters.push_back(store_parameter);
+ std::shared_ptr<procedure_info> const volatile_store_info =
+ std::make_shared<procedure_info>(volatile_store_symbol,
+ std::vector<std::string>{ "target", "value" });
+ volatile_store_info->parameters.push_back(store_parameter);
+ result->enter("volatile_store", volatile_store_info);
+
return result;
}