diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-09-14 21:11:03 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-09-14 21:11:03 +0200 |
| commit | 52c8ca2c06da93c8d14e80a256e8996c1fa1e885 (patch) | |
| tree | 3579cffe682bb2d2270e5d892f26ae3c197880e6 /boot/symbol.cc | |
| parent | 49e6a0518eb6b7b09938b562ef270028337508bf (diff) | |
| download | elna-52c8ca2c06da93c8d14e80a256e8996c1fa1e885.tar.gz | |
Implement volatile operations
Diffstat (limited to 'boot/symbol.cc')
| -rw-r--r-- | boot/symbol.cc | 18 |
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; } |
