From 622aad96bf2541c2a4dee04cf6cc6cd645f9a54c Mon Sep 17 00:00:00 2001 From: tecodev Date: Mon, 26 Jun 2006 17:52:27 +0000 Subject: [PATCH] * src/pic16/gen.c (genFunction, genEndFunction): also preserve PCLATH and PCLATU on interrupts, potentially fixes #1505141 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4251 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- ChangeLog | 6 +++++- src/pic16/gen.c | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 8a261bd3..5223636d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-06-26 Raphael Neider + + * src/pic16/gen.c (genFunction, genEndFunction): also preserve + PCLATH and PCLATU on interrupts, potentially fixes #1505141 + 2006-06-25 Raphael Neider * device/lib/pic/libm: NEW, added math library functions @@ -49,7 +54,6 @@ * support/regression/ports/pic16/support.c: use gpsim usart module from libgpsim_modules library ->>>>>>> .r4249 2006-06-21 Jesus Calvino-Fraga * device/include/mcs51/at89c51ed2.h: Fixed bug 1510144 changed diff --git a/src/pic16/gen.c b/src/pic16/gen.c index 7dda28ae..e8773440 100644 --- a/src/pic16/gen.c +++ b/src/pic16/gen.c @@ -3758,6 +3758,8 @@ static void genFunction (iCode *ic) pic16_pushpCodeOp( pic16_popCopyReg( &pic16_pc_prodh )); pic16_pushpCodeOp( pic16_popCopyReg( &pic16_pc_fsr0l )); pic16_pushpCodeOp( pic16_popCopyReg( &pic16_pc_fsr0h )); + pic16_pushpCodeOp( pic16_popCopyReg( &pic16_pc_pclath )); + pic16_pushpCodeOp( pic16_popCopyReg( &pic16_pc_pclatu )); // pic16_pBlockConvert2ISR(pb); } @@ -3942,6 +3944,8 @@ static void genEndFunction (iCode *ic) _G.useWreg = 0; if (IFFUNC_ISISR(sym->type)) { + pic16_poppCodeOp( pic16_popCopyReg( &pic16_pc_pclatu )); + pic16_poppCodeOp( pic16_popCopyReg( &pic16_pc_pclath )); pic16_poppCodeOp( pic16_popCopyReg( &pic16_pc_fsr0h )); pic16_poppCodeOp( pic16_popCopyReg( &pic16_pc_fsr0l)); pic16_poppCodeOp( pic16_popCopyReg( &pic16_pc_prodh )); -- 2.30.2