slightly shorter
[fw/sdcc] / device / lib / _gptrget.c
index beb11aa228ea55d80bf759140a2979d520608d64..ed36448bc10ab69004d572880a39f120c45bd79c 100644 (file)
@@ -60,6 +60,7 @@ _gptrget (char *gptr) _naked
     ;   Pointer to data space
     ;
         mov     a,@r0                                   ; 1
+ dataptrrestore$:
         mov     r0,dph ; restore r0                     ; 2
         mov     dph,#0 ; restore dph                    ; 2
         ret                                             ; 1
@@ -68,9 +69,7 @@ _gptrget (char *gptr) _naked
     ;
  pdataptr$:
         movx    a,@r0                                   ; 1
-        mov     r0,dph ; restore r0                     ; 2
-        mov     dph,#0 ; restore dph                    ; 2
-        ret                                             ; 1
+        sjmp    dataptrrestore$                         ; 2
     ;
     ;   pointer to code area
     ;
@@ -97,7 +96,7 @@ _gptrget (char *gptr) _naked
         movx    a,@dptr                                 ; 1
         ret                                             ; 1
                                                         ;===
-                                                        ;47 bytes
+                                                        ;44 bytes
      _endasm ;
 }
 
@@ -184,6 +183,7 @@ _gptrget (char *gptr) _naked
     ;   Pointer to data space
     ;
         mov     a,@r0                                   ; 1
+ dataptrrestore$:
         mov     r0,dph ; restore r0                     ; 2
         mov     dph,#0 ; restore dph                    ; 2
         ret                                             ; 1
@@ -192,9 +192,7 @@ _gptrget (char *gptr) _naked
     ;
  pdataptr$:
         movx    a,@r0                                   ; 1
-        mov     r0,dph ; restore r0                     ; 2
-        mov     dph,#0 ; restore dph                    ; 2
-        ret                                             ; 1
+        sjmp    dataptrrestore$                         ; 2
     ;
     ;   pointer to code area, max 16 bits
     ;
@@ -209,7 +207,7 @@ _gptrget (char *gptr) _naked
         movx    a,@dptr                                 ; 1
         ret                                             ; 1
                                                         ;===
-                                                        ;30 bytes
+                                                        ;27 bytes
      _endasm ;
 }