Adjusted internal stack and pre-allocated registers for device types which have less...
authorslade_rich <slade_rich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 29 Dec 2004 05:53:12 +0000 (05:53 +0000)
committerslade_rich <slade_rich@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 29 Dec 2004 05:53:12 +0000 (05:53 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3622 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/pic/device.c
src/pic/pcode.c

index 3cb56d1f72e59b3fe70deb2bacbaf247663a3566..495eee7db10dacf04cd261fd26b6f8c129ce1a3f 100644 (file)
@@ -58,7 +58,7 @@ static PIC_device Pics[] = {
                        (memRange *)NULL,
                        (memRange *)NULL,
                        0,
-                       0xcf,
+                       0x4f, /* 68 register available 0x0C to 0x4F (0x8C to 0xCF mapped to bank 0) */
                        0x80,
        },
        
index ac42f6c65fef870876827ac1782558606adf70ee..2d249b431da1a17f33af1d5e7f7e21fb1b278ac7 100644 (file)
@@ -1347,6 +1347,8 @@ void  pCodeInitRegisters(void)
        stkSize = 8; // Set pseudo stack size to 8
        initStack(shareBankAddress, stkSize); // Putting the pseudo stack in shared memory so all modules use the same register when passing fn parameters
        init_pic(port->processor);
+       if ((unsigned)shareBankAddress > getMaxRam())
+               shareBankAddress = (int)getMaxRam();
        
        pc_status.r = allocProcessorRegister(IDX_STATUS,"STATUS", PO_STATUS, 0x180);
        pc_pcl.r = allocProcessorRegister(IDX_PCL,"PCL", PO_PCL, 0x80);