diff options
author | Keith Packard <keithp@keithp.com> | 2008-12-28 00:09:30 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2008-12-28 00:09:30 -0800 |
commit | 23aca1fcbc169184e32d4ec19f28dd4fd4cfda36 (patch) | |
tree | 57a61e4a0170837f43315294326d14bc410eb2ae /lib/ccdbg.h | |
parent | 1405838160b69e2cda456e21502a1d03b3aa7548 (diff) |
Save/restore regs when reading/writing memory. Add SFR access.
The DPL and ACC registers are used by the memory access code,
so they need to be saved and restored. Stuff them up high in ram for now;
this should probably be fixed to pull them back to the host instead.
Special SFR access is required as not all SFRs are visible in the unified
address space.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'lib/ccdbg.h')
-rw-r--r-- | lib/ccdbg.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/ccdbg.h b/lib/ccdbg.h index 834092b2..203b5aeb 100644 --- a/lib/ccdbg.h +++ b/lib/ccdbg.h @@ -44,6 +44,7 @@ #define MOV_Rn_data(n) (0x78 | (n)) #define DJNZ_Rn_rel(n) (0xd8 | (n)) #define MOV_A_direct 0xe5 +#define MOV_direct1_direct2 0x85 #define MOV_direct_A 0xf5 #define MOV_DPTR_data16 0x90 #define MOV_A_data 0x74 @@ -57,6 +58,13 @@ /* 8051 special function registers */ +#define SFR_P0 0x80 +#define SFR_SP 0x81 +#define SFR_DPL0 0x82 +#define SFR_DPH0 0x83 +#define SFR_DPL1 0x84 +#define SFR_DPH1 0x85 + /* flash controller */ #define FWT 0xAB #define FADDRL 0xAC @@ -323,4 +331,10 @@ ccdbg_write_hex_image(struct ccdbg *dbg, struct hex_image *image, uint16_t offse struct hex_image * ccdbg_read_hex_image(struct ccdbg *dbg, uint16_t address, uint16_t length); +uint8_t +ccdbg_read_sfr(struct ccdbg *dbg, uint8_t addr, uint8_t *bytes, int nbytes); + +uint8_t +ccdbg_write_sfr(struct ccdbg *dbg, uint8_t addr, uint8_t *bytes, int nbytes); + #endif /* _CCDBG_H_ */ |