diff --git a/examples/api/crt0.S b/examples/api/crt0.S
index 6daf127..5f956e4 100644
--- a/examples/api/crt0.S
+++ b/examples/api/crt0.S
@@ -49,13 +49,21 @@ syscall:
  _start:
         ldr     ip, =search_hint
         str     sp, [ip]
+       ldr     ip, =gd_backup
+       str     r8, [ip]
         b       main


         .globl syscall
  syscall:
+       push    {r6-r8, lr}
+       ldr     r6, =gd_backup
+       ldr     r8, [r6]
         ldr     ip, =syscall_ptr
+       mov     lr, pc
         ldr     pc, [ip]
+       str     r8, [r6]
+       pop     {r6-r8, pc}

  #else
  #error No support for this arch!
@@ -69,3 +77,7 @@ syscall_ptr:
         .globl search_hint
  search_hint:
         .long   0
+
+       .globl gd_backup
+gd_backup:
+       .long   0
