* src/pic16/device.c (pic16_dump_gsection,
[fw/sdcc] / device / lib / pic16 / libsdcc / gptr / gptrput2.c
index 514a791448a28c397c17612702f9ba70a8d6986b..3bef2928931df337f15f8166ee5b6df4c81d7902 100644 (file)
 ** $Id$
 */
 
-/* write address is expected to be in WREG:FSR0H:FSR0L while
- * write value is in TBLPTRL:TBLPTRH:PRODH:PRODL */
+/* write address is expected to be in WREG:PRODL:FSR0L while
+ * write value is in TBLPTRL:TBLPTRH: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 _gptrput2(void) _naked
 {
@@ -54,11 +56,13 @@ void _gptrput2(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
     
     return