* src/pic16/device.c (pic16_dump_gsection,
[fw/sdcc] / device / lib / pic16 / libsdcc / gptr / gptrput4.c
index 01b7db2b0b0bf1ca957cc0d030b988fb9dcb0b4a..d8358e5e3457f8897fa388b3d4e07dbec2b2cfb0 100644 (file)
 */
 
 /* write address is expected to be in WREG:FSR0H:FSR0L while
- * write value is in TBLPTRH:TBLPTRL:PRODH:PRODL */
+ * write value is in TBLPTRH:TBLPTRL:PRODH:[stack] */
  
 extern POSTINC0;
+extern PREINC1;
 extern INDF0;
 extern FSR0L;
 extern FSR0H;
@@ -43,6 +44,7 @@ extern TBLPTRU;
 extern TABLAT;
 extern PRODL;
 extern PRODH;
+extern _GPTRREG;
 
 void _gptrput4(void) _naked
 {
@@ -54,11 +56,13 @@ void _gptrput4(void) _naked
      * 11 -> unimplemented
      */
     btfss      _WREG, 7
-    goto       _lab_01_
+    bra                _lab_01_
     
     /* data pointer  */
     /* data are already in FSR0 */
-    movff      _PRODL, _POSTINC0
+    movff      _PRODL, _FSR0H
+    
+    movff      _PREINC1, _POSTINC0
     movff      _PRODH, _POSTINC0
     movff      _TBLPTRL, _POSTINC0
     movff      _TBLPTRH, _POSTINC0