From 99769695d7c897c8678d4fb40ffebb17cbd4875d Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Thu, 26 Sep 2013 00:25:48 -0700 Subject: [PATCH] Fix ADCS C bit --- src/arm/isa-arm.c | 5 ++--- src/arm/isa-thumb.c | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/arm/isa-arm.c b/src/arm/isa-arm.c index fdf8e3379..78f7e8db6 100644 --- a/src/arm/isa-arm.c +++ b/src/arm/isa-arm.c @@ -569,10 +569,9 @@ DEFINE_ALU_INSTRUCTION_ARM(ADD, ARM_ADDITION_S(n, cpu->shifterOperand, cpu->gprs int32_t n = cpu->gprs[rn]; cpu->gprs[rd] = n + cpu->shifterOperand;) -DEFINE_ALU_INSTRUCTION_ARM(ADC, ARM_ADDITION_S(n, shifterOperand, cpu->gprs[rd]), +DEFINE_ALU_INSTRUCTION_ARM(ADC, ARM_ADDITION_S(n, cpu->shifterOperand, cpu->gprs[rd]), int32_t n = cpu->gprs[rn]; - int32_t shifterOperand = cpu->shifterOperand + cpu->cpsr.c; - cpu->gprs[rd] = n + shifterOperand;) + cpu->gprs[rd] = n + cpu->shifterOperand + cpu->cpsr.c;) DEFINE_ALU_INSTRUCTION_ARM(AND, ARM_NEUTRAL_S(cpu->gprs[rn], cpu->shifterOperand, cpu->gprs[rd]), cpu->gprs[rd] = cpu->gprs[rn] & cpu->shifterOperand;) diff --git a/src/arm/isa-thumb.c b/src/arm/isa-thumb.c index f8ba056cb..29f23edcc 100644 --- a/src/arm/isa-thumb.c +++ b/src/arm/isa-thumb.c @@ -255,9 +255,9 @@ DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ASR2, THUMB_NEUTRAL_S( , , cpu->gprs[rd])) DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC, - int n = cpu->gprs[rn] + cpu->cpsr.c; + int n = cpu->gprs[rn]; int d = cpu->gprs[rd]; - cpu->gprs[rd] = d + n; + cpu->gprs[rd] = d + n + cpu->cpsr.c; THUMB_ADDITION_S(d, n, cpu->gprs[rd]);) DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC,