From 617ae3de6c95d9293627b9da71a724343f8d5f0d Mon Sep 17 00:00:00 2001 From: slade_rich Date: Mon, 6 Sep 2004 01:45:35 +0000 Subject: [PATCH] Changed PIC14 code to not set bit RP1 when maxram is less than 0x100. git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3477 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 7 +++++++ src/pic/device.c | 10 ++++++++-- src/pic/device.h | 1 + src/pic/pcode.c | 6 ++++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index ece04471..02469c61 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2004-09-06 Slade Rich + + * src/pic/device.h, + * src/pic/device.c, + * src/pic/port.c : Changed PIC14 code to not set bit RP1 when + maxram is less than 0x100. + 2004-09-06 Slade Rich * Bug fixes for PIC14 - signed RSHIFT problem. Patch supplied by Allen(agschrum). diff --git a/src/pic/device.c b/src/pic/device.c index 67b168d3..d66bbdfb 100644 --- a/src/pic/device.c +++ b/src/pic/device.c @@ -93,8 +93,6 @@ static PIC_device Pics[] = { static int num_of_supported_PICS = sizeof(Pics)/sizeof(PIC_device); -#define DEFAULT_PIC "f877" - static PIC_device *pic=NULL; AssignedMemory *finalMapping=NULL; @@ -632,3 +630,11 @@ void setDefMaxRam(void) { setMaxRAM(pic->defMaxRAMaddrs); // Max RAM has not been included, so use default setting } + +/*-----------------------------------------------------------------* +* +*-----------------------------------------------------------------*/ +unsigned getMaxRam(void) +{ + return pic->defMaxRAMaddrs; +} diff --git a/src/pic/device.h b/src/pic/device.h index d961b339..52d50cc0 100644 --- a/src/pic/device.h +++ b/src/pic/device.h @@ -101,5 +101,6 @@ int REGallBanks(regs *reg); void addMemRange(memRange *r, int type); void setMaxRAM(int size); void setDefMaxRam(void); +unsigned getMaxRam(void); #endif /* __DEVICE_H__ */ diff --git a/src/pic/pcode.c b/src/pic/pcode.c index 79ae012e..8cdbf6b9 100644 --- a/src/pic/pcode.c +++ b/src/pic/pcode.c @@ -4413,7 +4413,8 @@ static int BankSelect(pCodeInstruction *pci, int cur_bank, regs *reg) insertBankSel(pci, reg->name); // Let linker choose the bank selection } else if ((cur_bank == -1)||(cur_bank == 'L')||(cur_bank == 'E')) { // Current bank unknown and new register bank is known then can set bank bits insertBankSwitch(pci, bank&1, PIC_RP0_BIT); - insertBankSwitch(pci, bank&2, PIC_RP1_BIT); + if (getMaxRam()&0x100) + insertBankSwitch(pci, bank&2, PIC_RP1_BIT); } else { // Current bank and new register banks known - can set bank bits switch((cur_bank^bank) & 3) { case 0: @@ -4426,7 +4427,8 @@ static int BankSelect(pCodeInstruction *pci, int cur_bank, regs *reg) break; case 3: insertBankSwitch(pci, bank&1, PIC_RP0_BIT); - insertBankSwitch(pci, bank&2, PIC_RP1_BIT); + if (getMaxRam()&0x100) + insertBankSwitch(pci, bank&2, PIC_RP1_BIT); break; } } -- 2.47.2