EXLMOTODEV

Xen-Arm_0002_Fix_build_via_lib1funcs.S.patch

Mar 14th, 2014
265
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.52 KB | None | 0 0
  1. diff --git a/Config.mk b/Config.mk
  2. index f44bbcf..fcbf36e 100755
  3. --- a/Config.mk
  4. +++ b/Config.mk
  5. @@ -37,7 +37,7 @@ HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
  6.  #
  7.  # Cross Tool chain configuration
  8.  #
  9. -TOOLCHAIN_PREFIX = /opt/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-
  10. +#TOOLCHAIN_PREFIX = /home/exl/x-tools/arm-qemu-eabi/bin/arm-qemu-eabi-
  11.  
  12.  #
  13.  # Toolchain configuration
  14. diff --git a/tools/minios/Config.mk b/tools/minios/Config.mk
  15. index b63f4fe..3496483 100755
  16. --- a/tools/minios/Config.mk
  17. +++ b/tools/minios/Config.mk
  18. @@ -15,7 +15,7 @@ HOSTCFLAGS        = -Wall -Werror -Wstrict-prototypes -g -fomit-frame-pointer
  19.  # Cross Tool chain configuration
  20.  #
  21.  #CROSS_COMPILE     = arm_v4t_le-
  22. -CROSS_COMPILE      = /opt/arm-linux-4.1.1/bin/arm-linux-
  23. +#CROSS_COMPILE     = /home/exl/x-tools/arm-qemu-eabi/bin/arm-qemu-eabi-
  24.  
  25.  #
  26.  # Target Configuration for Xeno-mini
  27. diff --git a/tools/minios/Makefile b/tools/minios/Makefile
  28. index 39b878e..7672d50 100755
  29. --- a/tools/minios/Makefile
  30. +++ b/tools/minios/Makefile
  31. @@ -10,6 +10,8 @@ OBJS            := arch/$(XENO_TARGET_ARCH)/$(XENO_TARGET_ARCH).o
  32.  OBJS            += kernel/built_in.o
  33.  OBJS            += lib/built_in.o
  34.  
  35. +all: default
  36. +
  37.  default: $(XENO_TARGET_IMAGE)
  38.  
  39.  $(XENO_TARGET_IMAGE): build
  40. diff --git a/tools/minios/kernel/gnttab.c b/tools/minios/kernel/gnttab.c
  41. index 0cea337..e2fb465 100755
  42. --- a/tools/minios/kernel/gnttab.c
  43. +++ b/tools/minios/kernel/gnttab.c
  44. @@ -190,7 +190,7 @@ gnttab_end_foreign_access_ref(grant_ref_t ref, int readonly)
  45.             return 0;
  46.         }
  47.     }
  48. -   while ((nflags = atomic_cmpxchg_u16(&shared[ref].flags, flags, 0)) !=
  49. +   while ((nflags = atomic_cmpxchg_u16((u16 *)&shared[ref].flags, flags, 0)) !=
  50.            flags);
  51.  
  52.     return 1;
  53. @@ -248,7 +248,7 @@ gnttab_end_foreign_transfer_ref(grant_ref_t ref)
  54.           * reference and return failure (== 0).
  55.           */
  56.     while (!((flags = shared[ref].flags) & GTF_transfer_committed)) {
  57. -       if ( atomic_cmpxchg_u16(&shared[ref].flags, flags, 0) == flags )
  58. +       if ( atomic_cmpxchg_u16((u16 *)shared[ref].flags, flags, 0) == flags )
  59.             return 0;
  60.         cpu_relax();
  61.     }
  62. diff --git a/tools/minios/lib/lib1funcs.S b/tools/minios/lib/lib1funcs.S
  63. index 6dc0648..4e824b6 100644
  64. --- a/tools/minios/lib/lib1funcs.S
  65. +++ b/tools/minios/lib/lib1funcs.S
  66. @@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA.  */
  67.  #include <linux/linkage.h>
  68.  #include <asm/assembler.h>
  69.  
  70. +#define CONFIG_AEABI
  71.  
  72.  .macro ARM_DIV_BODY dividend, divisor, result, curbit
  73.  
  74. @@ -205,7 +206,9 @@ Boston, MA 02111-1307, USA.  */
  75.  .endm
  76.  
  77.  
  78. +/*
  79.  ENTRY(__udivsi3)
  80. +*/
  81.  ENTRY(__aeabi_uidiv)
  82.  
  83.     subs    r2, r1, #1
  84. @@ -230,9 +233,12 @@ ENTRY(__aeabi_uidiv)
  85.     mov r0, r0, lsr r2
  86.     mov pc, lr
  87.  
  88. +/*
  89.  ENDPROC(__udivsi3)
  90. +*/
  91.  ENDPROC(__aeabi_uidiv)
  92.  
  93. +/*
  94.  ENTRY(__umodsi3)
  95.  
  96.     subs    r2, r1, #1          @ compare divisor with 1
  97. @@ -248,8 +254,11 @@ ENTRY(__umodsi3)
  98.     mov pc, lr
  99.  
  100.  ENDPROC(__umodsi3)
  101. +*/
  102.  
  103. +/*
  104.  ENTRY(__divsi3)
  105. +*/
  106.  ENTRY(__aeabi_idiv)
  107.  
  108.     cmp r1, #0
  109. @@ -287,9 +296,12 @@ ENTRY(__aeabi_idiv)
  110.     rsbmi   r0, r0, #0
  111.     mov pc, lr
  112.  
  113. +/*
  114.  ENDPROC(__divsi3)
  115. +*/
  116.  ENDPROC(__aeabi_idiv)
  117.  
  118. +/*
  119.  ENTRY(__modsi3)
  120.  
  121.     cmp r1, #0
  122. @@ -311,6 +323,7 @@ ENTRY(__modsi3)
  123.     mov pc, lr
  124.  
  125.  ENDPROC(__modsi3)
  126. +*/
  127.  
  128.  #ifdef CONFIG_AEABI
  129.  
  130. @@ -336,13 +349,26 @@ ENTRY(__aeabi_idivmod)
  131.  
  132.  ENDPROC(__aeabi_idivmod)
  133.  
  134. +ENTRY(__aeabi_uldivmod)
  135. +
  136. +   sub sp, sp, #8
  137. +   stmfd sp!, {sp, lr}
  138. +   bl __qdivrem
  139. +   ldr lr, [sp, #4]
  140. +   add sp, sp, #8
  141. +   ldmfd sp!, {r2, r3}
  142. +   mov pc, lr
  143. +
  144. +ENDPROC(__aeabi_uldivmod)
  145. +
  146.  #endif
  147.  
  148.  Ldiv0:
  149.  
  150.     str lr, [sp, #-8]!
  151. -   bl  __div0
  152. +/* bl  __div0 */           @ See fix on arch/arm/common/math.S:242
  153.     mov r0, #0          @ About as wrong as it could be.
  154.     ldr pc, [sp], #8
  155.  
  156.  
  157. +#undef CONFIG_AEABI
  158. diff --git a/tools/minios/lib/math.c b/tools/minios/lib/math.c
  159. index 9a7eb18..058073f 100755
  160. --- a/tools/minios/lib/math.c
  161. +++ b/tools/minios/lib/math.c
  162. @@ -57,7 +57,7 @@
  163.  
  164.  #include <os/types.h>
  165.  
  166. -#if 0
  167. +#if 1
  168.  /*
  169.   * Depending on the desired operation, we view a `long long' (aka quad_t) in
  170.   * one or more of the following formats.
  171. diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
  172. index 0f5b4e5..625b6b7 100644
  173. --- a/xen/include/public/xen.h
  174. +++ b/xen/include/public/xen.h
  175. @@ -386,7 +386,7 @@ typedef struct vcpu_info {
  176.       * to block: this avoids wakeup-waiting races.
  177.       */
  178.      uint32_t evtchn_upcall_pending;
  179. -    //uint32_t evtchn_upcall_mask;
  180. +    uint32_t evtchn_upcall_mask;
  181.      unsigned long evtchn_pending_sel;
  182.      arch_vcpu_info_t arch;
  183.      vcpu_time_info_t time;
Advertisement
Add Comment
Please, Sign In to add comment