Changed PIC14 code to not set bit RP1 when maxram is less than 0x100.
authorslade_rich <slade_rich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 6 Sep 2004 01:45:35 +0000 (01:45 +0000)
committerslade_rich <slade_rich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 6 Sep 2004 01:45:35 +0000 (01:45 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3477 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/pic/device.c
src/pic/device.h
src/pic/pcode.c

index ece04471eb8d399a17b8fb563f5dd80e80936ac3..02469c614f6b6521e88c5deecad0adbcba909c77 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-09-06 Slade Rich <slade_rich AT users.sourceforge.net>
+
+       * 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 <slade_rich AT users.sourceforge.net>
 
        * Bug fixes for PIC14 - signed RSHIFT problem. Patch supplied by Allen(agschrum).
index 67b168d329df16425d58fcffbe358a7d7bfefba8..d66bbdfb550745a5306fed5bd9b6b26dd0674f5e 100644 (file)
@@ -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;
+}
index d961b339de51a5c8477dce07b54bb29148fb7dc2..52d50cc06e76bd3d627edeaf6d23f818cdb88c49 100644 (file)
@@ -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__ */
index 79ae012e896a6738fd72b69e7756fd73010c0e8f..8cdbf6b9d888d1bda89696bd5ecd8b8f650ddabe 100644 (file)
@@ -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;
                }
        }