arch-arm: Correct return operand in swap instructions

Swap instructions are configured as non returning AMO operations. This is wrong because they
return the previous value stored in the target memory position

Change-Id: I84d75a571a8eaeaee0dbfac344f7b34c72b47d53
This commit is contained in:
Víctor Soria
2023-07-24 16:25:08 +02:00
parent 4fd9d66c53
commit 12dada2dc5

View File

@@ -827,35 +827,35 @@ let {{
ret_op=False, flavor="release").emit(OP_DICT['MIN'])
AtomicArithmeticSingleOp("swpb", "SWPB", 1, unsign=True,
ret_op=False, flavor="normal").emit(OP_DICT['SWP'])
flavor="normal").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swplb", "SWPLB", 1, unsign=True,
ret_op=False, flavor="release").emit(OP_DICT['SWP'])
flavor="release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpab", "SWPAB", 1, unsign=True,
ret_op=False, flavor="acquire").emit(OP_DICT['SWP'])
flavor="acquire").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swplab", "SWPLAB", 1, unsign=True,
ret_op=False, flavor="acquire_release").emit(OP_DICT['SWP'])
flavor="acquire_release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swph", "SWPH", 2, unsign=True,
ret_op=False, flavor="normal").emit(OP_DICT['SWP'])
flavor="normal").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swplh", "SWPLH", 2, unsign=True,
ret_op=False, flavor="release").emit(OP_DICT['SWP'])
flavor="release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpah", "SWPAH", 2, unsign=True,
ret_op=False, flavor="acquire").emit(OP_DICT['SWP'])
flavor="acquire").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swplah", "SWPLAH", 2, unsign=True,
ret_op=False, flavor="acquire_release").emit(OP_DICT['SWP'])
flavor="acquire_release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swp", "SWP", 4, unsign=True,
ret_op=False, flavor="normal").emit(OP_DICT['SWP'])
flavor="normal").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpl", "SWPL", 4, unsign=True,
ret_op=False, flavor="release").emit(OP_DICT['SWP'])
flavor="release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpa", "SWPA", 4, unsign=True,
ret_op=False, flavor="acquire").emit(OP_DICT['SWP'])
flavor="acquire").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpla", "SWPLA", 4, unsign=True,
ret_op=False, flavor="acquire_release").emit(OP_DICT['SWP'])
flavor="acquire_release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swp64", "SWP64", 8, unsign=True,
ret_op=False, flavor="normal").emit(OP_DICT['SWP'])
flavor="normal").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpl64", "SWPL64", 8, unsign=True,
ret_op=False, flavor="release").emit(OP_DICT['SWP'])
flavor="release").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpa64", "SWPA64", 8, unsign=True,
ret_op=False, flavor="acquire").emit(OP_DICT['SWP'])
flavor="acquire").emit(OP_DICT['SWP'])
AtomicArithmeticSingleOp("swpla64", "SWPLA64", 8, unsign=True,
ret_op=False, flavor="acquire_release").emit(OP_DICT['SWP'])
flavor="acquire_release").emit(OP_DICT['SWP'])
}};