saving some cycles in generic pointer get
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 19 Jul 2003 16:55:58 +0000 (16:55 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 19 Jul 2003 16:55:58 +0000 (16:55 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@2755 4a8a32a2-be11-0410-ad9d-d568d2c75423

device/lib/_gptrget.c

index 0fbdd39ba6dd8ff7aeb2e752e3472bbe97d66c8e..3f2cb922fe502cc059c7b3e2c3c0005a1b9d8ef6 100644 (file)
@@ -33,8 +33,6 @@ _gptrget (char *gptr)
        
     _asm
     ;   save values passed
-       xch    a,r0
-       push   acc
     ;
     ;   depending on the pointer type acc. to SDCCsymt.h
     ;
@@ -58,8 +56,13 @@ _gptrget (char *gptr)
     ;   Pointer to data space
     ;
  00001$:
+       push    ar0
+        ;
        mov     r0,dpl     ; use only low order address
        mov     a,@r0
+        ;
+        pop     ar0
+        ;
         sjmp    00005$
     ;
     ;   pointer to xternal data
@@ -78,15 +81,12 @@ _gptrget (char *gptr)
 ;   pointer to xternal stack
 ;
  00004$:
-       mov     r0,dpl
-        movx    a,@r0
+        mov     dph,p2          ; p2 holds high byte for pdata access
+        movx    a,@dptr
 ;
-;   restore and return
+;   return
 ;
  00005$:
-        mov     r0,a
-        pop     acc
-       xch     a,r0
      _endasm ;
 }