root/lib/libc/thumb1_case.S

/* [<][>][^][v][top][bottom][index][help] */
   1 // GCC support for 'switch' instruction in Thumb16 code
   2 // copied from GCC library so that modules can be linked without including the GCC library
   3 // philmoz 22/11/2013
   4 
   5         .text
   6         .align 0
   7         .force_thumb
   8         .syntax unified
   9         .global __gnu_thumb1_case_uqi
  10         .thumb_func
  11         .type __gnu_thumb1_case_uqi,function
  12 __gnu_thumb1_case_uqi:
  13         push    {r1}
  14         mov     r1, lr
  15         lsrs    r1, r1, #1
  16         lsls    r1, r1, #1
  17         ldrb    r1, [r1, r0]
  18         lsls    r1, r1, #1
  19         add     lr, lr, r1
  20         pop     {r1}
  21         bx      lr
  22         .size __gnu_thumb1_case_uqi, . - __gnu_thumb1_case_uqi
  23         
  24         .text
  25         .align 0
  26         .force_thumb
  27         .syntax unified
  28         .global __gnu_thumb1_case_uhi
  29         .thumb_func
  30         .type __gnu_thumb1_case_uhi,function
  31 __gnu_thumb1_case_uhi:
  32         push    {r0, r1}
  33         mov     r1, lr
  34         lsrs    r1, r1, #1
  35         lsls    r0, r0, #1
  36         lsls    r1, r1, #1
  37         ldrh    r1, [r1, r0]
  38         lsls    r1, r1, #1
  39         add     lr, lr, r1
  40         pop     {r0, r1}
  41         bx      lr
  42         .size __gnu_thumb1_case_uhi, . - __gnu_thumb1_case_uhi
  43 
  44     .text
  45     .align 0
  46     .force_thumb
  47     .syntax unified
  48     .global __gnu_thumb1_case_sqi
  49     .thumb_func
  50     .type __gnu_thumb1_case_sqi,function
  51 __gnu_thumb1_case_sqi:
  52      push    {r1}
  53      mov r1, lr
  54      lsrs    r1, r1, #1
  55      lsls    r1, r1, #1
  56      ldrsb   r1, [r1, r0]
  57      lsls    r1, r1, #1
  58      add lr, r1
  59      pop {r1}
  60      bx  lr
  61     .size __gnu_thumb1_case_sqi, . - __gnu_thumb1_case_sqi

/* [<][>][^][v][top][bottom][index][help] */