Search
lxdream.org :: lxdream :: r63:be4fec751961
lxdream 0.9.1
released Jun 29
Download Now
changeset63:be4fec751961
parent62:a1cb6dfefec1
child64:f8864188e83f
authornkeynes
dateMon Jan 02 23:07:17 2006 +0000 (14 years ago)
Fix exception return address
Accidentally left UNIMP() on entire arith extension block, removed
src/aica/armcore.c
1.1 --- a/src/aica/armcore.c Mon Jan 02 23:06:37 2006 +0000
1.2 +++ b/src/aica/armcore.c Mon Jan 02 23:07:17 2006 +0000
1.3 @@ -1,5 +1,5 @@
1.4 /**
1.5 - * $Id: armcore.c,v 1.14 2006-01-02 14:49:29 nkeynes Exp $
1.6 + * $Id: armcore.c,v 1.15 2006-01-02 23:07:17 nkeynes Exp $
1.7 *
1.8 * ARM7TDMI CPU emulation core.
1.9 *
1.10 @@ -210,7 +210,7 @@
1.11 uint32_t spsr = arm_get_cpsr();
1.12 arm_set_mode( mode );
1.13 armr.spsr = spsr;
1.14 - armr.r[14] = armr.r[15];
1.15 + armr.r[14] = armr.r[15] + 4;
1.16 armr.cpsr = (spsr & 0xFFFFFF00) | mode | CPSR_I;
1.17 if( mode == MODE_FIQ )
1.18 armr.cpsr |= CPSR_F;
1.19 @@ -769,7 +769,6 @@
1.20 }
1.21 } else if( (ir & 0x0E000090) == 0x00000090 ) {
1.22 /* Neither are these */
1.23 - UNIMP(ir);
1.24 switch( (ir>>5)&0x03 ) {
1.25 case 0:
1.26 /* Arithmetic extension area */
1.27 @@ -793,20 +792,14 @@
1.28 armr.z = (tmp == 0);
1.29 break;
1.30 case 8: /* UMULL */
1.31 - break;
1.32 case 9: /* UMULLS */
1.33 - break;
1.34 case 10: /* UMLAL */
1.35 - break;
1.36 case 11: /* UMLALS */
1.37 - break;
1.38 case 12: /* SMULL */
1.39 - break;
1.40 case 13: /* SMULLS */
1.41 - break;
1.42 case 14: /* SMLAL */
1.43 - break;
1.44 case 15: /* SMLALS */
1.45 + UNIMP(ir);
1.46 break;
1.47 case 16: /* SWP */
1.48 tmp = arm_read_long( RN(ir) );
.