target/ppc: Implement PNOP
The illegal suffix behavior matches what was observed in a POWER10 DD2.0 machine. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Matheus Ferst <matheus.ferst@eldorado.org.br> Message-Id: <20210601193528.2533031-6-matheus.ferst@eldorado.org.br> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
5e56086423
commit
0a11bb7a35
@ -28,3 +28,70 @@
|
||||
|
||||
PADDI 000001 10 0--.-- .................. \
|
||||
001110 ..... ..... ................ @PLS_D
|
||||
|
||||
### Prefixed No-operation Instruction
|
||||
|
||||
@PNOP 000001 11 0000-- 000000000000000000 \
|
||||
................................
|
||||
|
||||
{
|
||||
[
|
||||
## Invalid suffixes: Branch instruction
|
||||
# bc[l][a]
|
||||
INVALID ................................ \
|
||||
010000-------------------------- @PNOP
|
||||
# b[l][a]
|
||||
INVALID ................................ \
|
||||
010010-------------------------- @PNOP
|
||||
# bclr[l]
|
||||
INVALID ................................ \
|
||||
010011---------------0000010000- @PNOP
|
||||
# bcctr[l]
|
||||
INVALID ................................ \
|
||||
010011---------------1000010000- @PNOP
|
||||
# bctar[l]
|
||||
INVALID ................................ \
|
||||
010011---------------1000110000- @PNOP
|
||||
|
||||
## Invalid suffixes: rfebb
|
||||
INVALID ................................ \
|
||||
010011---------------0010010010- @PNOP
|
||||
|
||||
## Invalid suffixes: context synchronizing other than isync
|
||||
# sc
|
||||
INVALID ................................ \
|
||||
010001------------------------1- @PNOP
|
||||
# scv
|
||||
INVALID ................................ \
|
||||
010001------------------------01 @PNOP
|
||||
# rfscv
|
||||
INVALID ................................ \
|
||||
010011---------------0001010010- @PNOP
|
||||
# rfid
|
||||
INVALID ................................ \
|
||||
010011---------------0000010010- @PNOP
|
||||
# hrfid
|
||||
INVALID ................................ \
|
||||
010011---------------0100010010- @PNOP
|
||||
# urfid
|
||||
INVALID ................................ \
|
||||
010011---------------0100110010- @PNOP
|
||||
# stop
|
||||
INVALID ................................ \
|
||||
010011---------------0101110010- @PNOP
|
||||
# mtmsr w/ L=0
|
||||
INVALID ................................ \
|
||||
011111---------0-----0010010010- @PNOP
|
||||
# mtmsrd w/ L=0
|
||||
INVALID ................................ \
|
||||
011111---------0-----0010110010- @PNOP
|
||||
|
||||
## Invalid suffixes: Service Processor Attention
|
||||
INVALID ................................ \
|
||||
000000----------------100000000- @PNOP
|
||||
]
|
||||
|
||||
## Valid suffixes
|
||||
PNOP ................................ \
|
||||
-------------------------------- @PNOP
|
||||
}
|
||||
|
@ -60,3 +60,14 @@ static bool trans_ADDIS(DisasContext *ctx, arg_D *a)
|
||||
a->si <<= 16;
|
||||
return trans_ADDI(ctx, a);
|
||||
}
|
||||
|
||||
static bool trans_INVALID(DisasContext *ctx, arg_INVALID *a)
|
||||
{
|
||||
gen_invalid(ctx);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool trans_PNOP(DisasContext *ctx, arg_PNOP *a)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user