diff --git a/doc/asm.html b/doc/asm.html index 392af174c27f0e..3e03c548fd189b 100644 --- a/doc/asm.html +++ b/doc/asm.html @@ -780,6 +780,64 @@
+The registers R10
and R11
are reserved.
+The assembler uses them to hold temporary values when assembling some instructions.
+
+R13
points to the g
(goroutine) structure.
+This register must be referred to as g
; the name R13
is not recognized.
+
+R15
points to the stack frame and should typically only be accessed using the
+virtual registers SP
and FP
.
+
+Load- and store-multiple instructions operate on a range of registers.
+The range of registers is specified by a start register and an end register.
+For example, LMG
(R9),
R5,
R7
would load
+R5
, R6
and R7
with the 64-bit values at
+0(R9)
, 8(R9)
and 16(R9)
respectively.
+
+Storage-and-storage instructions such as MVC
and XC
are written
+with the length as the first argument.
+For example, XC
$8,
(R9),
(R9)
would clear
+eight bytes at the address specified in R9
.
+
+If a vector instruction takes a length or an index as an argument then it will be the
+first argument.
+For example, VLEIF
$1,
$16,
V2
will load
+the value sixteen into index one of V2
.
+Care should be taken when using vector instructions to ensure that they are available at
+runtime.
+To use vector instructions a machine must have both the vector facility (bit 129 in the
+facility list) and kernel support.
+Without kernel support a vector instruction will have no effect (it will be equivalent
+to a NOP
instruction).
+
+Addressing modes: +
+ +(R5)(R6*1)
: The location at R5
plus R6
.
+It is a scaled mode as on the x86, but the only scale allowed is 1
.
+