diff --git a/specification/bk_main.xml b/specification/bk_main.xml index a018706..8beecad 100644 --- a/specification/bk_main.xml +++ b/specification/bk_main.xml @@ -57,7 +57,7 @@ Freescale Semiconductor, Inc - Revision 1.5g draft + Revision 1.5h draft OpenPOWER @@ -93,6 +93,17 @@ + + 2018-12-17 + + + + Revision 1.5h: PC-relative addressing eighth + draft. + + + + 2018-10-02 diff --git a/specification/ch_3.xml b/specification/ch_3.xml index d8de312..a290f2c 100644 --- a/specification/ch_3.xml +++ b/specification/ch_3.xml @@ -2277,291 +2277,8 @@ my_func: - In the following figure, prefix32 specifies a 32-bit field taking up - bits 14-31 and 48-61 of two consecutive words. This is used, for - example, by the pld instruction. - - - - - - - - - - - - - - - - - - - 0 - - - 3 - - - 1 - - - - - - - - - 2 - - - 2 - - - 1 - - - 3 - - - 0 - - - - - - - - prefix32 (high 18 bits) - - - - - 0 - - - 13 - - - 14 - - - 31 - - - - - 4 - - - 7 - - - 5 - - - 6 - - - 6 - - - 5 - - - 7 - - - - - - - - - 4 - - - - - - - - prefix32 (low 14 bits) - - - - - - - - - - - 32 - - - 47 - - - 48 - - - 61 - - - 62 - - - 63 - - - - - - - In the following figure, prefix30 specifies a 30-bit field taking up - bits 14-31 and 48-59 of two consecutive words. This is used, for - example, by the plxv instruction. - - - - - - - - - - - - - - - - - - - 0 - - - 3 - - - 1 - - - - - - - - - 2 - - - 2 - - - 1 - - - 3 - - - 0 - - - - - - - - prefix30 (high 18 bits) - - - - - 0 - - - 13 - - - 14 - - - 31 - - - - - 4 - - - 7 - - - 5 - - - 6 - - - 6 - - - 5 - - - 7 - - - - - - 4 - - - - - - - - prefix30 (low 12 bits) - - - - - - - - - - - 32 - - - 47 - - - 48 - - - 59 - - - 60 - - - 63 - - - - - - - In the following figure, prefix24 specifies a 24-bit field taking up - bits 20-31 and 48-59 of two consecutive words. This is used, for + In the following figure, prefix28 specifies a 28-bit field taking up + bits 20-31 and 48-63 of two consecutive words. This is used, for example, by the pmlxv instruction. @@ -2616,7 +2333,7 @@ my_func: - prefix24 (high 12 bits) + prefix28 (high 12 bits) @@ -2652,7 +2369,7 @@ my_func: 5 - + 7 @@ -2663,15 +2380,9 @@ my_func: - - prefix24 (low 12 bits) + + prefix28 (low 16 bits) - - - - - - @@ -2683,11 +2394,11 @@ my_func: 48 - - 59 + + - 60 + 63 @@ -2929,35 +2640,6 @@ my_func: - - - #hi30(value) - - - - Denotes bits 34–63 of the indicated 64-bit value. - That is: - - - #hi30(x) = x >> 34 - - - - - - #ha30(value) - - - - Denotes the high adjusted value: bits 34–63 of the - indicated 64-bit value, compensating for #lo34() being - treated as a signed number. That is: - - - #ha30(x) = (x + 0x200000000) >> 34 - - - #higher34(value) @@ -3070,6 +2752,17 @@ my_func: dtv[dtpmod] + dtprel = (S + A) + + + rel16dx + + + + Represents a 16-bit signed offset split across three + fields, as required by the addpcis instruction. + + + tprel @@ -4933,7 +4626,7 @@ my_func: - R_PPC64_PCREL34 + R_PPC64_D34 128 @@ -4942,54 +4635,54 @@ my_func: prefix34* - S + A – P + S + A - R_PPC64_PCREL32 + R_PPC64_D34_LO 129 - prefix32* + prefix34 - (S + A – P) >> 2 + #lo34(S + A) - R_PPC64_PCREL30 + R_PPC64_D34_HIGHER34 130 - prefix30* + prefix34 - (S + A – P) >> 4 + #higher34(S + A) - R_PPC64_PCREL24 + R_PPC64_D34_HIGHERA34 131 - prefix24* + prefix34 - (S + A – P) >> 4 + #highera34(S + A) - R_PPC64_GOT_PCREL34 + R_PPC64_PCREL34 132 @@ -4998,413 +4691,287 @@ my_func: prefix34* - G – P + S + A – P - R_PPC64_GOT_PCREL32 + R_PPC64_GOT_PCREL34 133 - prefix32* + prefix34* - (G – P) >> 2 + G – P - R_PPC64_GOT_PCREL30 + R_PPC64_PLT_PCREL34 134 - prefix30* + prefix34* - (G – P) >> 4 + L – P - R_PPC64_GOT_PCREL24 + R_PPC64_PLT_PCREL34_NOTOC 135 - prefix24* + prefix34* - (G – P) >> 4 + L – P - R_PPC64_PLT_PCREL34 + R_PPC64_ADDR16_HIGHER34 136 - prefix34* + half16 - L – P + #higher34(S + A) - R_PPC64_PLT_PCREL32 + R_PPC64_ADDR16_HIGHERA34 137 - prefix32* + half16 - (L – P) >> 2 + #highera34(S + A) - R_PPC64_PLT_PCREL30 + R_PPC64_ADDR16_HIGHEST34 138 - prefix30* + half16 - (L – P) >> 4 + #highest34(S + A) - R_PPC64_PLT_PCREL24 + R_PPC64_ADDR16_HIGHESTA34 139 - prefix24* + half16 - (L – P) >> 4 + #highesta34(S + A) - R_PPC64_PLT_PCREL34_NOTOC + R_PPC64_REL16_HIGHER34 140 - prefix34* + half16 - L – P + #higher34(S + A – P) - R_PPC64_PLT_PCREL32_NOTOC + R_PPC64_REL16_HIGHERA34 141 - prefix32* + half16 - (L – P) >> 2 + #highera34(S + A – P) - R_PPC64_PLT_PCREL30_NOTOC + R_PPC64_REL16_HIGHEST34 142 - prefix30* + half16 - (L – P) >> 4 + #highest34(S + A – P) - R_PPC64_PLT_PCREL24_NOTOC + R_PPC64_REL16_HIGHESTA34 143 - prefix24* + half16 - (L – P) >> 4 + #highesta34(S + A – P) - R_PPC64_D34 + R_PPC64_D28 144 - prefix34* + prefix28* - #lo34(S + A) + S + A - R_PPC64_D32 + R_PPC64_PCREL28 145 - prefix32* + prefix28* - #lo34(S + A) >> 2 - - - - - R_PPC64_D30 - - - 146 - - - prefix30* - - - #lo34(S + A) >> 4 - - - - - R_PPC64_D24 - - - 147 - - - prefix24* - - - #lo28(S + A) >> 4 - - - - - R_PPC64_D34_LO - - - 148 - - - prefix34 - - - #lo34(S + A) - - - - - R_PPC64_D32_LO - - - 149 - - - prefix32 - - - #lo34(S + A) >> 2 - - - - - R_PPC64_D30_LO - - - 150 - - - prefix30 - - - #lo34(S + A) >> 4 - - - - - R_PPC64_D24_LO - - - 151 - - - prefix24 - - - #lo28(S + A) >> 4 - - - - - R_PPC64_D34_HIGHER34 - - - 152 - - - prefix34 - - - #hi30(S + A) - - - - - R_PPC64_D34_HIGHERA34 - - - 153 - - - prefix34 - - - #ha30(S + A) - - - - - R_PPC64_ADDR16_HIGHER34 - - - 154 - - - half16 - - - #higher34(S + A) + S + A – P - R_PPC64_ADDR16_HIGHERA34 + R_PPC64_REL16_HIGH - 155 + 240 half16 - #highera34(S + A) + #hi(S + A – P) - R_PPC64_ADDR16_HIGHEST34 + R_PPC64_REL16_HIGHA - 156 + 241 half16 - #highest34(S + A) + #ha(S + A – P) - R_PPC64_ADDR16_HIGHESTA34 + R_PPC64_REL16_HIGHER - 157 + 242 half16 - #highesta34(S + A) + #higher(S + A – P) - R_PPC64_REL16_HIGHER34 + R_PPC64_REL16_HIGHERA - 158 + 243 half16 - #higher34(S + A – P) + #highera(S + A – P) - R_PPC64_REL16_HIGHERA34 + R_PPC64_REL16_HIGHEST - 159 + 244 half16 - #highera34(S + A – P) + #highest(S + A – P) - R_PPC64_REL16_HIGHEST34 + R_PPC64_REL16_HIGHESTA - 160 + 245 half16 - #highest34(S + A – P) + #highesta(S + A – P) - R_PPC64_REL16_HIGHESTA34 + R_PPC64_REL16DX_HA - 161 + 246 - half16 + rel16dx* - #highesta34(S + A – P) + #ha(S + A – P)