* src/pic16/device.c (pic16_dump_gsection,
[fw/sdcc] / device / lib / pic16 / libsdcc / gptr / gptrput3.c
index d5eea4e646c9a01aeab0aba90691815992cf01d2..80e562e528ba9a92b3f8cde510c9e6d0ff99d5ab 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 _gptrput3(void) _naked
 {
@@ -54,11 +56,13 @@ void _gptrput3(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