mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 08:43:55 -06:00
target-arm: A64: add support for 2-src data processing and DIV
This patch adds support for decoding 2-src data processing insns, and the first users, UDIV and SDIV. Signed-off-by: Alexander Graf <agraf@suse.de> [claudio: adapted to new decoder adding the 2-src decoding level, always zero-extend result in 32bit mode] Signed-off-by: Claudio Fontana <claudio.fontana@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
e801de93d0
commit
8220e911c2
3 changed files with 93 additions and 2 deletions
|
@ -23,3 +23,24 @@
|
|||
#include "qemu/host-utils.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qemu/bitops.h"
|
||||
|
||||
/* C2.4.7 Multiply and divide */
|
||||
/* special cases for 0 and LLONG_MIN are mandated by the standard */
|
||||
uint64_t HELPER(udiv64)(uint64_t num, uint64_t den)
|
||||
{
|
||||
if (den == 0) {
|
||||
return 0;
|
||||
}
|
||||
return num / den;
|
||||
}
|
||||
|
||||
int64_t HELPER(sdiv64)(int64_t num, int64_t den)
|
||||
{
|
||||
if (den == 0) {
|
||||
return 0;
|
||||
}
|
||||
if (num == LLONG_MIN && den == -1) {
|
||||
return LLONG_MIN;
|
||||
}
|
||||
return num / den;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue