X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fxa.src%2Fregsxa.h;h=c59247254edabeb1c980a8aee40f6848391c4dea;hb=7b0c1bf49c52185dcf0fc02421dda5a781ce9409;hp=215315985c0b5196d32a67031fd30893a2096d20;hpb=6b61acfcb7473459f6ffc08566325d1f8cd87d1f;p=fw%2Fsdcc diff --git a/sim/ucsim/xa.src/regsxa.h b/sim/ucsim/xa.src/regsxa.h index 21531598..c5924725 100644 --- a/sim/ucsim/xa.src/regsxa.h +++ b/sim/ucsim/xa.src/regsxa.h @@ -55,6 +55,26 @@ struct t_regs #define get_byte_direct(addr) sfr->get((t_addr) (addr)) #define get_word_direct(addr) (sfr->get((t_addr) (addr)) | (sfr->get((t_addr) (addr+1)) << 8) ) +/* store to idata(onchip) ram */ +#define set_idata2(addr, val) { iram->set((t_addr) (addr), (val) & 0xff); \ + iram->set((t_addr) (addr+1), ((val) >> 8) & 0xff); } +#define set_idata1(addr, val) iram->set((t_addr) (addr), (val) ) + +/* get from idata(onchip) ram */ +#define get_idata1(addr) iram->get((t_addr) (addr)) +#define get_idata2(addr) (iram->get((t_addr) (addr)) | (iram->get((t_addr) (addr+1)) << 8) ) + +/* store to xdata(external) ram */ +#define set_xdata2(addr, val) { ram->set((t_addr) (addr), (val) & 0xff); \ + ram->set((t_addr) (addr+1), ((val) >> 8) & 0xff); } +#define set_xdata1(addr, val) ram->set((t_addr) (addr), val) + +/* get from xdata(external) ram */ +#define get_xdata1(addr) ram->get((t_addr) (addr)) +#define get_xdata2(addr) (ram->get((t_addr) (addr)) | (ram->get((t_addr) (addr+1)) << 8) ) + +#if 0 + moved to inst.cc as functions /* store to ram */ #define store2(addr, val) { ram->set((t_addr) (addr), (val) & 0xff); \ ram->set((t_addr) (addr+1), ((val) >> 8) & 0xff); } @@ -63,6 +83,7 @@ struct t_regs /* get from ram */ #define get1(addr) ram->get((t_addr) (addr)) #define get2(addr) (ram->get((t_addr) (addr)) | (ram->get((t_addr) (addr+1)) << 8) ) +#endif /* get from code */ #define getcode1(addr) rom->get((t_addr) (addr)) @@ -77,7 +98,7 @@ struct t_regs #define reg1(_index) (unsigned char)get_reg(0, (_index)) #define set_reg1(_index, _value) { \ - set_byte_direct((REGS_OFFSET+(_index<<1)), _value); \ + set_byte_direct((REGS_OFFSET+(_index)), _value); \ } #define set_reg2(_index, _value) { \