summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-03-15 22:39:14 +0000
committerDave Chapman <dave@dchapman.com>2006-03-15 22:39:14 +0000
commit318953334b6252d2c3bc583eb0320f04567c18ba (patch)
treec7465e2d15030e934ab4a6a88019a30489f7747f
parent211d827c0a29083d96e0432c6965d8f3d59a9884 (diff)
downloadrockbox-318953334b6252d2c3bc583eb0320f04567c18ba.tar.gz
rockbox-318953334b6252d2c3bc583eb0320f04567c18ba.zip
Another optimisation from Fredrik Öhrn - put the Z80 registers and some lookup tables in IRAM. Gives a significant boost on Coldfire targets
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9053 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugins/pacbox/z80.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/apps/plugins/pacbox/z80.c b/apps/plugins/pacbox/z80.c
index b489682b3a..dace7b1bed 100644
--- a/apps/plugins/pacbox/z80.c
+++ b/apps/plugins/pacbox/z80.c
@@ -28,7 +28,7 @@
28#include "z80_internal.h" 28#include "z80_internal.h"
29 29
30// Table with parity, sign and zero flags precomputed for each byte value 30// Table with parity, sign and zero flags precomputed for each byte value
31unsigned char PSZ_[256] = { 31unsigned char PSZ_[256] IDATA_ATTR = {
32 Zero|Parity, 0, 0, Parity, 0, Parity, Parity, 0, 0, Parity, Parity, 0, Parity, 0, 0, Parity, 32 Zero|Parity, 0, 0, Parity, 0, Parity, Parity, 0, 0, Parity, Parity, 0, Parity, 0, 0, Parity,
33 0, Parity, Parity, 0, Parity, 0, 0, Parity, Parity, 0, 0, Parity, 0, Parity, Parity, 0, 33 0, Parity, Parity, 0, Parity, 0, 0, Parity, Parity, 0, 0, Parity, 0, Parity, Parity, 0,
34 0, Parity, Parity, 0, Parity, 0, 0, Parity, Parity, 0, 0, Parity, 0, Parity, Parity, 0, 34 0, Parity, Parity, 0, Parity, 0, 0, Parity, Parity, 0, 0, Parity, 0, Parity, Parity, 0,
@@ -76,33 +76,33 @@ void do_opcode_xy( OpcodeInfo * );
76/** */ 76/** */
77unsigned do_opcode_xycb( unsigned xy ); 77unsigned do_opcode_xycb( unsigned xy );
78 78
79unsigned iflags_; // Interrupt mode (bits 0 and 1) and flags 79unsigned iflags_ IBSS_ATTR; // Interrupt mode (bits 0 and 1) and flags
80unsigned cycles_; // Number of CPU cycles elapsed so far 80unsigned cycles_ IBSS_ATTR; // Number of CPU cycles elapsed so far
81 81
82 82
83// Registers 83// Registers
84unsigned char B; //@- B register 84unsigned char B IBSS_ATTR; //@- B register
85unsigned char C; //@- C register 85unsigned char C IBSS_ATTR; //@- C register
86unsigned char D; //@- D register 86unsigned char D IBSS_ATTR; //@- D register
87unsigned char E; //@- E register 87unsigned char E IBSS_ATTR; //@- E register
88unsigned char H; //@- H register 88unsigned char H IBSS_ATTR; //@- H register
89unsigned char L; //@- L register 89unsigned char L IBSS_ATTR; //@- L register
90unsigned char A; //@- A register (accumulator) 90unsigned char A IBSS_ATTR; //@- A register (accumulator)
91unsigned char F; //@- Flags register 91unsigned char F IBSS_ATTR; //@- Flags register
92unsigned char B1; //@- Alternate B register (B') 92unsigned char B1 IBSS_ATTR; //@- Alternate B register (B')
93unsigned char C1; //@- Alternate C register (C') 93unsigned char C1 IBSS_ATTR; //@- Alternate C register (C')
94unsigned char D1; //@- Alternate D register (D') 94unsigned char D1 IBSS_ATTR; //@- Alternate D register (D')
95unsigned char E1; //@- Alternate E register (E') 95unsigned char E1 IBSS_ATTR; //@- Alternate E register (E')
96unsigned char H1; //@- Alternate H register (H') 96unsigned char H1 IBSS_ATTR; //@- Alternate H register (H')
97unsigned char L1; //@- Alternate L register (L') 97unsigned char L1 IBSS_ATTR; //@- Alternate L register (L')
98unsigned char A1; //@- Alternate A register (A') 98unsigned char A1 IBSS_ATTR; //@- Alternate A register (A')
99unsigned char F1; //@- Alternate flags register (F') 99unsigned char F1 IBSS_ATTR; //@- Alternate flags register (F')
100unsigned IX; //@- Index register X 100unsigned IX IBSS_ATTR; //@- Index register X
101unsigned IY; //@- Index register Y 101unsigned IY IBSS_ATTR; //@- Index register Y
102unsigned PC; //@- Program counter 102unsigned PC IBSS_ATTR; //@- Program counter
103unsigned SP; //@- Stack pointer 103unsigned SP IBSS_ATTR; //@- Stack pointer
104unsigned char I; //@- Interrupt register 104unsigned char I IBSS_ATTR; //@- Interrupt register
105unsigned char R; //@- Refresh register 105unsigned char R IBSS_ATTR; //@- Refresh register
106 106
107 107
108/** Returns the 16 bit register BC. */ 108/** Returns the 16 bit register BC. */