diff --git a/src/insns/store_16bit_cap_sprel.adoc b/src/insns/store_16bit_cap_sprel.adoc index 01f53ded..ce8d14af 100644 --- a/src/insns/store_16bit_cap_sprel.adoc +++ b/src/insns/store_16bit_cap_sprel.adoc @@ -24,11 +24,22 @@ include::xlen_variable_warning.adoc[] Encoding:: include::wavedrom/c-sp-store-cap.adoc[] -include::store_cap_cap_description.adoc[] +{cheri_cap_mode_name} Description:: +Store the CLEN+1 bit value in `cs2'` to memory. The capability in `cs1/csp` +authorizes the operation. The effective address of the memory access is +obtained by adding the address of `cs1/csp` to the sign-extended 12-bit offset. NOTE: These mnemonics do not exist in {cheri_int_mode_name}. -:cap_store: +Tag of the written capability value:: + +The capability written to memory has the tag set to 0 if the tag of `cs2'` is 0 or if the authorizing capability (`cs1/csp`) does not grant <>. ++ +The stored tag is also set to zero if the authorizing capability does not have <> set but the stored data has a <> of 0 (_local_). + +include::malformed_no_check.adoc[] + +:has_cap_data: include::store_exceptions.adoc[] Prerequisites:: diff --git a/src/insns/store_cap_cap_description.adoc b/src/insns/store_cap_cap_description.adoc deleted file mode 100644 index a2617a4e..00000000 --- a/src/insns/store_cap_cap_description.adoc +++ /dev/null @@ -1,2 +0,0 @@ -{cheri_cap_mode_name} Description:: -Store capability instruction, authorised by the capability in `cs1`. Take a store/AMO address misaligned exception if not naturally aligned.