mirror of
https://github.com/yuzu-mirror/oaknut.git
synced 2025-12-06 07:01:59 +01:00
oaknut: Add PAUTH instructions
This commit is contained in:
parent
1ca13c3b63
commit
94c726ce03
|
|
@ -1,6 +1,78 @@
|
||||||
// SPDX-FileCopyrightText: Copyright (c) 2023 merryhime <https://mary.rs>
|
// SPDX-FileCopyrightText: Copyright (c) 2023 merryhime <https://mary.rs>
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
void AUTDA(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z110nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void AUTDB(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z111nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void AUTDZA(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z11011111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void AUTDZB(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z11111111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void AUTIA(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z100nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void AUTIB(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z101nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void AUTIZA(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z10011111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void AUTIZB(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z10111111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void BLRAA(XReg xn, XRegSp xm)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0011111100001Mnnnnnmmmmm", "Z", "M", "n", "m">(1, 0, xn, xm);
|
||||||
|
}
|
||||||
|
void BLRAAZ(XReg xn)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0011111100001Mnnnnn11111", "Z", "M", "n">(0, 0, xn);
|
||||||
|
}
|
||||||
|
void BLRAB(XReg xn, XRegSp xm)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0011111100001Mnnnnnmmmmm", "Z", "M", "n", "m">(1, 1, xn, xm);
|
||||||
|
}
|
||||||
|
void BLRABZ(XReg xn)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0011111100001Mnnnnn11111", "Z", "M", "n">(0, 1, xn);
|
||||||
|
}
|
||||||
|
void BRAA(XReg xn, XRegSp xm)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0001111100001Mnnnnnmmmmm", "Z", "M", "n", "m">(1, 0, xn, xm);
|
||||||
|
}
|
||||||
|
void BRAAZ(XReg xn)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0001111100001Mnnnnn11111", "Z", "M", "n">(0, 0, xn);
|
||||||
|
}
|
||||||
|
void BRAB(XReg xn, XRegSp xm)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0001111100001Mnnnnnmmmmm", "Z", "M", "n", "m">(1, 1, xn, xm);
|
||||||
|
}
|
||||||
|
void BRABZ(XReg xn)
|
||||||
|
{
|
||||||
|
emit<"1101011Z0001111100001Mnnnnn11111", "Z", "M", "n">(0, 1, xn);
|
||||||
|
}
|
||||||
|
void ERETAA()
|
||||||
|
{
|
||||||
|
emit<"110101101001111100001M1111111111", "M">(0);
|
||||||
|
}
|
||||||
|
void ERETAB()
|
||||||
|
{
|
||||||
|
emit<"110101101001111100001M1111111111", "M">(1);
|
||||||
|
}
|
||||||
void LDAPR(WReg wt, XRegSp xn)
|
void LDAPR(WReg wt, XRegSp xn)
|
||||||
{
|
{
|
||||||
emit<"1011100010111111110000nnnnnttttt", "t", "n">(wt, xn);
|
emit<"1011100010111111110000nnnnnttttt", "t", "n">(wt, xn);
|
||||||
|
|
@ -16,4 +88,72 @@ void LDAPRB(WReg wt, XRegSp xn)
|
||||||
void LDAPRH(WReg wt, XRegSp xn)
|
void LDAPRH(WReg wt, XRegSp xn)
|
||||||
{
|
{
|
||||||
emit<"0111100010111111110000nnnnnttttt", "t", "n">(wt, xn);
|
emit<"0111100010111111110000nnnnnttttt", "t", "n">(wt, xn);
|
||||||
|
}
|
||||||
|
void LDRAA(XReg xt, XRegSp xn, SOffset<13, 3> simm = 0)
|
||||||
|
{
|
||||||
|
emit<"11111000Mi1iiiiiiiiiW1nnnnnttttt", "M", "W", "t", "n", "i">(0, 0, xt, xn, simm);
|
||||||
|
}
|
||||||
|
void LDRAB(XReg xt, XRegSp xn, SOffset<13, 3> simm = 0)
|
||||||
|
{
|
||||||
|
emit<"11111000Mi1iiiiiiiiiW1nnnnnttttt", "M", "W", "t", "n", "i">(1, 0, xt, xn, simm);
|
||||||
|
}
|
||||||
|
void LDRAA(XReg xt, XRegSp xn, PreIndexed, SOffset<13, 3> simm)
|
||||||
|
{
|
||||||
|
emit<"11111000Mi1iiiiiiiiiW1nnnnnttttt", "M", "W", "t", "n", "i">(0, 1, xt, xn, simm);
|
||||||
|
}
|
||||||
|
void LDRAB(XReg xt, XRegSp xn, PreIndexed, SOffset<13, 3> simm)
|
||||||
|
{
|
||||||
|
emit<"11111000Mi1iiiiiiiiiW1nnnnnttttt", "M", "W", "t", "n", "i">(1, 1, xt, xn, simm);
|
||||||
|
}
|
||||||
|
void PACDA(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z010nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void PACDB(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z011nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void PACDZA(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z01011111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void PACDZB(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z01111111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void PACGA(XReg xd, XReg xn, XRegSp xm)
|
||||||
|
{
|
||||||
|
emit<"10011010110mmmmm001100nnnnnddddd", "d", "n", "m">(xd, xn, xm);
|
||||||
|
}
|
||||||
|
void PACIA(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z000nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void PACIB(XReg xd, XRegSp xn)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z001nnnnnddddd", "Z", "d", "n">(0, xd, xn);
|
||||||
|
}
|
||||||
|
void PACIZA(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z00011111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void PACIZB(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000100Z00111111ddddd", "Z", "d">(1, xd);
|
||||||
|
}
|
||||||
|
void RETAA()
|
||||||
|
{
|
||||||
|
emit<"110101100101111100001M1111111111", "M">(0);
|
||||||
|
}
|
||||||
|
void RETAB()
|
||||||
|
{
|
||||||
|
emit<"110101100101111100001M1111111111", "M">(1);
|
||||||
|
}
|
||||||
|
void XPACD(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000101000D11111nnnnn", "D", "n">(1, xd);
|
||||||
|
}
|
||||||
|
void XPACI(XReg xd)
|
||||||
|
{
|
||||||
|
emit<"110110101100000101000D11111nnnnn", "D", "n">(0, xd);
|
||||||
}
|
}
|
||||||
|
|
@ -111,6 +111,18 @@ T(0x9ac22a3f, ASRV(XZR, X17, X2))
|
||||||
// T(0xd50f78af, AT(SYS 7, C7, C8, 5, X15))
|
// T(0xd50f78af, AT(SYS 7, C7, C8, 5, X15))
|
||||||
// T(0xd50c79a4, AT(SYS 4, C7, C9, 5, X4))
|
// T(0xd50c79a4, AT(SYS 4, C7, C9, 5, X4))
|
||||||
// T(0xd5087926, AT(SYS 0, C7, C9, 1, X6))
|
// T(0xd5087926, AT(SYS 0, C7, C9, 1, X6))
|
||||||
|
T(0xdac11883, AUTDA(X3, X4))
|
||||||
|
T(0xdac11be5, AUTDA(X5, SP))
|
||||||
|
T(0xdac11c83, AUTDB(X3, X4))
|
||||||
|
T(0xdac11fe5, AUTDB(X5, SP))
|
||||||
|
T(0xdac13be5, AUTDZA(X5))
|
||||||
|
T(0xdac13fe5, AUTDZB(X5))
|
||||||
|
T(0xdac11083, AUTIA(X3, X4))
|
||||||
|
T(0xdac113e5, AUTIA(X5, SP))
|
||||||
|
T(0xdac11483, AUTIB(X3, X4))
|
||||||
|
T(0xdac117e5, AUTIB(X5, SP))
|
||||||
|
T(0xdac133e5, AUTIZA(X5))
|
||||||
|
T(0xdac137e5, AUTIZB(X5))
|
||||||
T(0x161e54bf, B(-126266628))
|
T(0x161e54bf, B(-126266628))
|
||||||
T(0x17a62057, B(-23559844))
|
T(0x17a62057, B(-23559844))
|
||||||
T(0x16345f90, B(-120488384))
|
T(0x16345f90, B(-120488384))
|
||||||
|
|
@ -140,9 +152,21 @@ T(0x95b27a60, BL(113895808))
|
||||||
T(0x956ab105, BL(95077396))
|
T(0x956ab105, BL(95077396))
|
||||||
T(0xd63f0160, BLR(X11))
|
T(0xd63f0160, BLR(X11))
|
||||||
T(0xd63f0220, BLR(X17))
|
T(0xd63f0220, BLR(X17))
|
||||||
|
T(0xd73f0822, BLRAA(X1, X2))
|
||||||
|
T(0xd73f087f, BLRAA(X3, SP))
|
||||||
|
T(0xd63f08bf, BLRAAZ(X5))
|
||||||
|
T(0xd73f0c22, BLRAB(X1, X2))
|
||||||
|
T(0xd73f0c7f, BLRAB(X3, SP))
|
||||||
|
T(0xd63f0cbf, BLRABZ(X5))
|
||||||
T(0xd61f0280, BR(X20))
|
T(0xd61f0280, BR(X20))
|
||||||
T(0xd61f0260, BR(X19))
|
T(0xd61f0260, BR(X19))
|
||||||
T(0xd61f0320, BR(X25))
|
T(0xd61f0320, BR(X25))
|
||||||
|
T(0xd71f0822, BRAA(X1, X2))
|
||||||
|
T(0xd71f087f, BRAA(X3, SP))
|
||||||
|
T(0xd61f08bf, BRAAZ(X5))
|
||||||
|
T(0xd71f0c22, BRAB(X1, X2))
|
||||||
|
T(0xd71f0c7f, BRAB(X3, SP))
|
||||||
|
T(0xd61f0cbf, BRABZ(X5))
|
||||||
T(0xd433f1c0, BRK(0x9f8e))
|
T(0xd433f1c0, BRK(0x9f8e))
|
||||||
T(0xd43f7820, BRK(0xfbc1))
|
T(0xd43f7820, BRK(0xfbc1))
|
||||||
T(0xd43127c0, BRK(0x893e))
|
T(0xd43127c0, BRK(0x893e))
|
||||||
|
|
@ -303,6 +327,8 @@ T(0xca1512ba, EOR(X26, X21, X21, LSL, 4))
|
||||||
T(0xcadca40f, EOR(X15, X0, X28, ROR, 41))
|
T(0xcadca40f, EOR(X15, X0, X28, ROR, 41))
|
||||||
T(0xca450f15, EOR(X21, X24, X5, LSR, 3))
|
T(0xca450f15, EOR(X21, X24, X5, LSR, 3))
|
||||||
T(0xd69f03e0, ERET())
|
T(0xd69f03e0, ERET())
|
||||||
|
T(0xd69f0bff, ERETAA())
|
||||||
|
T(0xd69f0fff, ERETAB())
|
||||||
T(0x138122a5, EXTR(W5, W21, W1, 8))
|
T(0x138122a5, EXTR(W5, W21, W1, 8))
|
||||||
T(0x13815c7e, EXTR(W30, W3, W1, 23))
|
T(0x13815c7e, EXTR(W30, W3, W1, 23))
|
||||||
T(0x138b0722, EXTR(W2, W25, W11, 1))
|
T(0x138b0722, EXTR(W2, W25, W11, 1))
|
||||||
|
|
@ -418,6 +444,26 @@ T(0xb861d9f7, LDR(W23, X15, W1, SXTW, 2))
|
||||||
T(0xb864f8fa, LDR(W26, X7, X4, SXTX, 2))
|
T(0xb864f8fa, LDR(W26, X7, X4, SXTX, 2))
|
||||||
T(0xf861da0c, LDR(X12, X16, W1, SXTW, 3))
|
T(0xf861da0c, LDR(X12, X16, W1, SXTW, 3))
|
||||||
T(0xf8687a2b, LDR(X11, X17, X8, LSL, 3))
|
T(0xf8687a2b, LDR(X11, X17, X8, LSL, 3))
|
||||||
|
T(0xf8200441, LDRAA(X1, X2))
|
||||||
|
T(0xf87ff483, LDRAA(X3, X4, -8))
|
||||||
|
T(0xf82014c5, LDRAA(X5, X6, 8))
|
||||||
|
T(0xf83ff507, LDRAA(X7, X8, 4088))
|
||||||
|
T(0xf8600528, LDRAA(X8, X9, -4096))
|
||||||
|
T(0xf82007e2, LDRAA(X2, SP))
|
||||||
|
T(0xf87067e4, LDRAA(X4, SP, -2000))
|
||||||
|
T(0xf8201c62, LDRAA(X2, X3, PRE_INDEXED, 8))
|
||||||
|
T(0xf87ffca4, LDRAA(X4, X5, PRE_INDEXED, -8))
|
||||||
|
T(0xf83fffe6, LDRAA(X6, SP, PRE_INDEXED, 4088))
|
||||||
|
T(0xf8a00441, LDRAB(X1, X2))
|
||||||
|
T(0xf8fff483, LDRAB(X3, X4, -8))
|
||||||
|
T(0xf8a014c5, LDRAB(X5, X6, 8))
|
||||||
|
T(0xf8bff507, LDRAB(X7, X8, 4088))
|
||||||
|
T(0xf8e00528, LDRAB(X8, X9, -4096))
|
||||||
|
T(0xf8a007e2, LDRAB(X2, SP))
|
||||||
|
T(0xf8f067e4, LDRAB(X4, SP, -2000))
|
||||||
|
T(0xf8a01c62, LDRAB(X2, X3, PRE_INDEXED, 8))
|
||||||
|
T(0xf8fffca4, LDRAB(X4, X5, PRE_INDEXED, -8))
|
||||||
|
T(0xf8bfffe6, LDRAB(X6, SP, PRE_INDEXED, 4088))
|
||||||
T(0x385a47e7, LDRB(W7, SP, POST_INDEXED, -92))
|
T(0x385a47e7, LDRB(W7, SP, POST_INDEXED, -92))
|
||||||
T(0x3843e560, LDRB(W0, X11, POST_INDEXED, 62))
|
T(0x3843e560, LDRB(W0, X11, POST_INDEXED, 62))
|
||||||
T(0x3845244b, LDRB(W11, X2, POST_INDEXED, 82))
|
T(0x3845244b, LDRB(W11, X2, POST_INDEXED, 82))
|
||||||
|
|
@ -726,6 +772,20 @@ T(0x2a556110, ORR(W16, W8, W21, LSR, 24))
|
||||||
T(0xaa977e5e, ORR(X30, X18, X23, ASR, 31))
|
T(0xaa977e5e, ORR(X30, X18, X23, ASR, 31))
|
||||||
T(0xaa949fd6, ORR(X22, X30, X20, ASR, 39))
|
T(0xaa949fd6, ORR(X22, X30, X20, ASR, 39))
|
||||||
T(0xaa918fd6, ORR(X22, X30, X17, ASR, 35))
|
T(0xaa918fd6, ORR(X22, X30, X17, ASR, 35))
|
||||||
|
T(0xdac10883, PACDA(X3, X4))
|
||||||
|
T(0xdac10be5, PACDA(X5, SP))
|
||||||
|
T(0xdac10c83, PACDB(X3, X4))
|
||||||
|
T(0xdac10fe5, PACDB(X5, SP))
|
||||||
|
T(0xdac12be5, PACDZA(X5))
|
||||||
|
T(0xdac12fe5, PACDZB(X5))
|
||||||
|
T(0x9ac33041, PACGA(X1, X2, X3))
|
||||||
|
T(0x9adf3041, PACGA(X1, X2, SP))
|
||||||
|
T(0xdac10083, PACIA(X3, X4))
|
||||||
|
T(0xdac103e5, PACIA(X5, SP))
|
||||||
|
T(0xdac10483, PACIB(X3, X4))
|
||||||
|
T(0xdac107e5, PACIB(X5, SP))
|
||||||
|
T(0xdac123e5, PACIZA(X5))
|
||||||
|
T(0xdac127e5, PACIZB(X5))
|
||||||
// T(0xf98f5696, PRFM(22, [X20, 7848]))
|
// T(0xf98f5696, PRFM(22, [X20, 7848]))
|
||||||
// T(0xf9ae98c3, PRFM(PLDL2STRM, [X6, 23856]))
|
// T(0xf9ae98c3, PRFM(PLDL2STRM, [X6, 23856]))
|
||||||
// T(0xf983faf6, PRFM(22, [X23, 2032]))
|
// T(0xf983faf6, PRFM(22, [X23, 2032]))
|
||||||
|
|
@ -746,6 +806,8 @@ T(0xdac0003a, RBIT(X26, X1))
|
||||||
T(0xd65f0220, RET(X17))
|
T(0xd65f0220, RET(X17))
|
||||||
T(0xd65f0080, RET(X4))
|
T(0xd65f0080, RET(X4))
|
||||||
T(0xd65f0300, RET(X24))
|
T(0xd65f0300, RET(X24))
|
||||||
|
T(0xd65f0bff, RETAA())
|
||||||
|
T(0xd65f0fff, RETAB())
|
||||||
T(0x5ac00940, REV(W0, W10))
|
T(0x5ac00940, REV(W0, W10))
|
||||||
T(0x5ac00931, REV(W17, W9))
|
T(0x5ac00931, REV(W17, W9))
|
||||||
T(0x5ac00a6e, REV(W14, W19))
|
T(0x5ac00a6e, REV(W14, W19))
|
||||||
|
|
@ -1082,4 +1144,6 @@ T(0x53003de4, UXTH(W4, W15))
|
||||||
T(0x53003ce2, UXTH(W2, W7))
|
T(0x53003ce2, UXTH(W2, W7))
|
||||||
T(0xd503205f, WFE())
|
T(0xd503205f, WFE())
|
||||||
T(0xd503207f, WFI())
|
T(0xd503207f, WFI())
|
||||||
|
T(0xdac143e5, XPACI(X5))
|
||||||
|
T(0xdac147e5, XPACD(X5))
|
||||||
T(0xd503203f, YIELD())
|
T(0xd503203f, YIELD())
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue