Skip to content

Commit 83e971d

Browse files
committed
Add more prose on direct memory-offset MOVs.
Recommend deprecating these instructions in capability mode and not extending the immediate memory offsets to support capability immediates.
1 parent 3a236db commit 83e971d

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

chap-cheri-x86-64.tex

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ \subsubsection{Deprecated Instructions in Capability Mode}
274274
\item \insnnoref{LSS}
275275
\item \insnnoref{LAR}
276276
\item \insnnoref{LSL}
277+
\item Direct memory-offset \insnnoref{MOV}
277278
\end{itemize}
278279

279280
\subsection{Using Capabilities with Memory Address Operands}
@@ -373,6 +374,18 @@ \subsubsection{Absolute Addresses}
373374
register. These operands are always evaluated as offsets relative to
374375
\DDC{} including in capability mode.
375376

377+
\subsubsection{Direct Memory-Offset MOVs}
378+
379+
The direct memory-offset \insnnoref{MOV} instructions store the
380+
absolute address of a memory operand as an immediate operand.
381+
Extending these instructions to support capability immediates would
382+
require padding nops to align the capability immediate as well as text
383+
relocations (even for position-dependent code). However, we do not
384+
anticipate wide use of these instructions so instead choose to
385+
restrict memory offsets to integers. Attempting to use these
386+
instructions with capability-aware addressing would be reserved and
387+
raise a UD\# exception.
388+
376389
\subsubsection{Addresses Relative to CFS and CGS}
377390

378391
Capability-aware addressing must also permit addresses defined as
@@ -488,7 +501,7 @@ \subsubsection{Extending Existing Instructions to Support Capability Operands}
488501
Note that these instructions would only permit a general-purpose
489502
register as the source (\texttt{89}) or destination (\texttt{8B}).
490503

491-
The \texttt{A1} and \texttt{A2} opcodes would be extended to use
504+
The \texttt{A1} and \texttt{A3} opcodes would be extended to use
492505
\CAX{} as the implicit operand when used with the capability
493506
operand prefix.
494507

@@ -1399,3 +1412,11 @@ \subsection{Far Branches and Capabilities}
13991412
sense to deprecate far branches other than \insnnoref{IRET} completely
14001413
in capability mode causing the instructions to raise an illegal
14011414
instruction fault.
1415+
1416+
\subsection{Direct Memory-Offset MOVs}
1417+
1418+
These four \insnnoref{MOV} instructions store the address of their
1419+
memory operand inline as an immediate. These instructions could be
1420+
extended to support capability immediates for the memory offset. In
1421+
that case, the opcodes would be retained in capability mode rather
1422+
than deprecated.

0 commit comments

Comments
 (0)