rbdc 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. data/bindings/ruby/rbdc/extconf.rb +57 -0
  2. data/bindings/ruby/rbdc/rbdc.c +304 -0
  3. data/dyncall/AUTHORS +4 -0
  4. data/dyncall/BUGS +3 -0
  5. data/dyncall/CMakeLists.txt +79 -0
  6. data/dyncall/ChangeLog +165 -0
  7. data/dyncall/LICENSE +15 -0
  8. data/dyncall/Makefile.M +15 -0
  9. data/dyncall/Makefile.embedded +71 -0
  10. data/dyncall/Makefile.generic +36 -0
  11. data/dyncall/Nmakefile +45 -0
  12. data/dyncall/README +92 -0
  13. data/dyncall/ToDo +114 -0
  14. data/dyncall/autovar/LICENSE.txt +15 -0
  15. data/dyncall/autovar/README.txt +69 -0
  16. data/dyncall/autovar/autovar_ABI.h +44 -0
  17. data/dyncall/autovar/autovar_ARCH.h +56 -0
  18. data/dyncall/autovar/autovar_CC.h +46 -0
  19. data/dyncall/autovar/autovar_OS.h +78 -0
  20. data/dyncall/autovar/autovar_OSFAMILY.h +39 -0
  21. data/dyncall/buildsys/cmake/Modules/FindDynCall.cmake +43 -0
  22. data/dyncall/buildsys/cmake/Modules/FindDynCallback.cmake +43 -0
  23. data/dyncall/buildsys/cmake/Modules/FindDynLoad.cmake +45 -0
  24. data/dyncall/buildsys/cmake/Modules/UseLATEX.cmake +811 -0
  25. data/dyncall/buildsys/dynmake/Makefile.base.M +82 -0
  26. data/dyncall/buildsys/dynmake/dynmake.bat +2 -0
  27. data/dyncall/buildsys/dynmake/dynmake.sh +4 -0
  28. data/dyncall/buildsys/lua/Makefile +10 -0
  29. data/dyncall/buildsys/lua/README.txt +4 -0
  30. data/dyncall/buildsys/lua/bootstrap.sh +34 -0
  31. data/dyncall/buildsys/lua/cleanup.sh +6 -0
  32. data/dyncall/buildsys/lua/mkfile +34 -0
  33. data/dyncall/buildsys/lua/setenv.sh +4 -0
  34. data/dyncall/buildsys/mk/app.mk +30 -0
  35. data/dyncall/buildsys/mk/dirs.mk +27 -0
  36. data/dyncall/buildsys/mk/epilog.mk +30 -0
  37. data/dyncall/buildsys/mk/lib.mk +23 -0
  38. data/dyncall/buildsys/mk/pcc.mk +60 -0
  39. data/dyncall/buildsys/mk/prolog.mk +35 -0
  40. data/dyncall/buildsys/nmake/common.nmake +61 -0
  41. data/dyncall/buildsys/nmake/epilog.nmake +28 -0
  42. data/dyncall/buildsys/nmake/prolog.nmake +76 -0
  43. data/dyncall/buildsys/nmake/tool_gcc.nmake +82 -0
  44. data/dyncall/buildsys/nmake/tool_msvc.nmake +67 -0
  45. data/dyncall/buildsys/scripts/batch-build-linux.sh +11 -0
  46. data/dyncall/buildsys/scripts/batch-build-minix.sh +11 -0
  47. data/dyncall/buildsys/scripts/batch-build-psp.sh +11 -0
  48. data/dyncall/buildsys/scripts/conf-nds.bat +41 -0
  49. data/dyncall/buildsys/scripts/setenv-cross-ios.sh +8 -0
  50. data/dyncall/buildsys/scripts/setenv-sdk-ios.sh +22 -0
  51. data/dyncall/buildsys/vs2005/dyncall/dyncall.vcproj +245 -0
  52. data/dyncall/buildsys/vs2005/test_plain/test_plain.vcproj +202 -0
  53. data/dyncall/buildsys/vs2005/vs2005.sln +29 -0
  54. data/dyncall/configure +152 -0
  55. data/dyncall/configure.bat +157 -0
  56. data/dyncall/configure.rc +234 -0
  57. data/dyncall/dynMakefile +4 -0
  58. data/dyncall/dyncall/CMakeLists.txt +53 -0
  59. data/dyncall/dyncall/DynCallConfig.cmake +3 -0
  60. data/dyncall/dyncall/Makefile.M +10 -0
  61. data/dyncall/dyncall/Makefile.embedded +20 -0
  62. data/dyncall/dyncall/Makefile.generic +16 -0
  63. data/dyncall/dyncall/Nmakefile +62 -0
  64. data/dyncall/dyncall/README-Developer.txt +45 -0
  65. data/dyncall/dyncall/README.txt +65 -0
  66. data/dyncall/dyncall/TODO +9 -0
  67. data/dyncall/dyncall/dynMakefile +4 -0
  68. data/dyncall/dyncall/dyncall.3 +189 -0
  69. data/dyncall/dyncall/dyncall.h +135 -0
  70. data/dyncall/dyncall/dyncall_alloc.h +40 -0
  71. data/dyncall/dyncall/dyncall_api.c +167 -0
  72. data/dyncall/dyncall/dyncall_call.S +72 -0
  73. data/dyncall/dyncall/dyncall_call_arm32_arm.S +80 -0
  74. data/dyncall/dyncall/dyncall_call_arm32_arm.h +61 -0
  75. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.S +96 -0
  76. data/dyncall/dyncall/dyncall_call_arm32_arm_armhf.h +44 -0
  77. data/dyncall/dyncall/dyncall_call_arm32_thumb.h +65 -0
  78. data/dyncall/dyncall/dyncall_call_arm32_thumb_apple.s +80 -0
  79. data/dyncall/dyncall/dyncall_call_arm32_thumb_armhf.S +121 -0
  80. data/dyncall/dyncall/dyncall_call_arm32_thumb_gas.s +101 -0
  81. data/dyncall/dyncall/dyncall_call_mips.h +50 -0
  82. data/dyncall/dyncall/dyncall_call_mips_eabi.h +61 -0
  83. data/dyncall/dyncall/dyncall_call_mips_eabi_gas.s +115 -0
  84. data/dyncall/dyncall/dyncall_call_mips_gas.S +36 -0
  85. data/dyncall/dyncall/dyncall_call_mips_n32.h +67 -0
  86. data/dyncall/dyncall/dyncall_call_mips_n32_gas.s +192 -0
  87. data/dyncall/dyncall/dyncall_call_mips_n64.h +67 -0
  88. data/dyncall/dyncall/dyncall_call_mips_n64_gas.s +192 -0
  89. data/dyncall/dyncall/dyncall_call_mips_o32.h +70 -0
  90. data/dyncall/dyncall/dyncall_call_mips_o32_gas.s +109 -0
  91. data/dyncall/dyncall/dyncall_call_ppc32.S +266 -0
  92. data/dyncall/dyncall/dyncall_call_ppc32.h +62 -0
  93. data/dyncall/dyncall/dyncall_call_sparc.S +192 -0
  94. data/dyncall/dyncall/dyncall_call_sparc.h +42 -0
  95. data/dyncall/dyncall/dyncall_call_sparc64.S +361 -0
  96. data/dyncall/dyncall/dyncall_call_sparc64.h +42 -0
  97. data/dyncall/dyncall/dyncall_call_sparc_v9.S +220 -0
  98. data/dyncall/dyncall/dyncall_call_sparc_v9.h +42 -0
  99. data/dyncall/dyncall/dyncall_call_x64-att.S +146 -0
  100. data/dyncall/dyncall/dyncall_call_x64.S +149 -0
  101. data/dyncall/dyncall/dyncall_call_x64.h +63 -0
  102. data/dyncall/dyncall/dyncall_call_x64_generic_masm.asm +70 -0
  103. data/dyncall/dyncall/dyncall_call_x86.S +238 -0
  104. data/dyncall/dyncall/dyncall_call_x86.h +70 -0
  105. data/dyncall/dyncall/dyncall_call_x86_8a.s +127 -0
  106. data/dyncall/dyncall/dyncall_call_x86_generic_masm.asm +136 -0
  107. data/dyncall/dyncall/dyncall_call_x86_nasm.asm +234 -0
  108. data/dyncall/dyncall/dyncall_callf.c +112 -0
  109. data/dyncall/dyncall/dyncall_callf.h +52 -0
  110. data/dyncall/dyncall/dyncall_callvm.c +68 -0
  111. data/dyncall/dyncall/dyncall_callvm.h +88 -0
  112. data/dyncall/dyncall/dyncall_callvm_arm32_arm.c +250 -0
  113. data/dyncall/dyncall/dyncall_callvm_arm32_arm.h +59 -0
  114. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.c +204 -0
  115. data/dyncall/dyncall/dyncall_callvm_arm32_arm_armhf.h +63 -0
  116. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.c +271 -0
  117. data/dyncall/dyncall/dyncall_callvm_arm32_thumb.h +59 -0
  118. data/dyncall/dyncall/dyncall_callvm_base.c +33 -0
  119. data/dyncall/dyncall/dyncall_callvm_mips.c +40 -0
  120. data/dyncall/dyncall/dyncall_callvm_mips.h +37 -0
  121. data/dyncall/dyncall/dyncall_callvm_mips_eabi.c +181 -0
  122. data/dyncall/dyncall/dyncall_callvm_mips_eabi.h +61 -0
  123. data/dyncall/dyncall/dyncall_callvm_mips_n32.c +268 -0
  124. data/dyncall/dyncall/dyncall_callvm_mips_n64.c +268 -0
  125. data/dyncall/dyncall/dyncall_callvm_mips_n64.h +53 -0
  126. data/dyncall/dyncall/dyncall_callvm_mips_o32.c +235 -0
  127. data/dyncall/dyncall/dyncall_callvm_mips_o32.h +45 -0
  128. data/dyncall/dyncall/dyncall_callvm_ppc32.c +372 -0
  129. data/dyncall/dyncall/dyncall_callvm_ppc32.h +61 -0
  130. data/dyncall/dyncall/dyncall_callvm_sparc.c +155 -0
  131. data/dyncall/dyncall/dyncall_callvm_sparc.h +44 -0
  132. data/dyncall/dyncall/dyncall_callvm_sparc64.c +239 -0
  133. data/dyncall/dyncall/dyncall_callvm_sparc64.h +47 -0
  134. data/dyncall/dyncall/dyncall_callvm_sparc_v9.c +182 -0
  135. data/dyncall/dyncall/dyncall_callvm_sparc_v9.h +45 -0
  136. data/dyncall/dyncall/dyncall_callvm_x64.c +228 -0
  137. data/dyncall/dyncall/dyncall_callvm_x64.h +111 -0
  138. data/dyncall/dyncall/dyncall_callvm_x86.c +667 -0
  139. data/dyncall/dyncall/dyncall_callvm_x86.h +75 -0
  140. data/dyncall/dyncall/dyncall_config.h +46 -0
  141. data/dyncall/dyncall/dyncall_macros.h +248 -0
  142. data/dyncall/dyncall/dyncall_signature.h +71 -0
  143. data/dyncall/dyncall/dyncall_struct.c +255 -0
  144. data/dyncall/dyncall/dyncall_struct.h +69 -0
  145. data/dyncall/dyncall/dyncall_types.h +74 -0
  146. data/dyncall/dyncall/dyncall_utils.h +38 -0
  147. data/dyncall/dyncall/dyncall_value.h +73 -0
  148. data/dyncall/dyncall/dyncall_vector.c +52 -0
  149. data/dyncall/dyncall/dyncall_vector.h +56 -0
  150. data/dyncall/dyncall/gen-masm.sh +7 -0
  151. data/dyncall/dyncall/mkfile +29 -0
  152. data/dyncall/dyncallback/CMakeLists.txt +55 -0
  153. data/dyncall/dyncallback/DynCallbackConfig.cmake +2 -0
  154. data/dyncall/dyncallback/Makefile.M +10 -0
  155. data/dyncall/dyncallback/Makefile.embedded +15 -0
  156. data/dyncall/dyncallback/Makefile.generic +20 -0
  157. data/dyncall/dyncallback/Nmakefile +71 -0
  158. data/dyncall/dyncallback/README.txt +9 -0
  159. data/dyncall/dyncallback/TODO +4 -0
  160. data/dyncall/dyncallback/dynMakefile +4 -0
  161. data/dyncall/dyncallback/dyncall_alloc_wx.c +35 -0
  162. data/dyncall/dyncallback/dyncall_alloc_wx.h +46 -0
  163. data/dyncall/dyncallback/dyncall_alloc_wx_malloc.c +40 -0
  164. data/dyncall/dyncallback/dyncall_alloc_wx_mmap.c +42 -0
  165. data/dyncall/dyncallback/dyncall_alloc_wx_win32.c +42 -0
  166. data/dyncall/dyncallback/dyncall_args.c +45 -0
  167. data/dyncall/dyncallback/dyncall_args.h +65 -0
  168. data/dyncall/dyncallback/dyncall_args_arm32_arm.c +112 -0
  169. data/dyncall/dyncallback/dyncall_args_arm32_arm.h +40 -0
  170. data/dyncall/dyncallback/dyncall_args_arm32_thumb.c +29 -0
  171. data/dyncall/dyncallback/dyncall_args_arm32_thumb.h +32 -0
  172. data/dyncall/dyncallback/dyncall_args_mips.c +81 -0
  173. data/dyncall/dyncallback/dyncall_args_mips.h +41 -0
  174. data/dyncall/dyncallback/dyncall_args_ppc32.c +88 -0
  175. data/dyncall/dyncallback/dyncall_args_ppc32.h +41 -0
  176. data/dyncall/dyncallback/dyncall_args_sparc32.c +41 -0
  177. data/dyncall/dyncallback/dyncall_args_sparc32.h +37 -0
  178. data/dyncall/dyncallback/dyncall_args_sparc64.c +41 -0
  179. data/dyncall/dyncallback/dyncall_args_sparc64.h +37 -0
  180. data/dyncall/dyncallback/dyncall_args_x64.c +73 -0
  181. data/dyncall/dyncallback/dyncall_args_x64.h +44 -0
  182. data/dyncall/dyncallback/dyncall_args_x86.c +121 -0
  183. data/dyncall/dyncallback/dyncall_args_x86.h +58 -0
  184. data/dyncall/dyncallback/dyncall_callback.c +45 -0
  185. data/dyncall/dyncallback/dyncall_callback.h +51 -0
  186. data/dyncall/dyncallback/dyncall_callback_arch.S +71 -0
  187. data/dyncall/dyncallback/dyncall_callback_arm32_arm.c +63 -0
  188. data/dyncall/dyncallback/dyncall_callback_arm32_arm.h +45 -0
  189. data/dyncall/dyncallback/dyncall_callback_arm32_arm_apple.s +73 -0
  190. data/dyncall/dyncallback/dyncall_callback_arm32_arm_gas.s +73 -0
  191. data/dyncall/dyncallback/dyncall_callback_arm32_thumb.c +29 -0
  192. data/dyncall/dyncallback/dyncall_callback_arm32_thumb.h +33 -0
  193. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_apple.s +32 -0
  194. data/dyncall/dyncallback/dyncall_callback_arm32_thumb_gas.s +32 -0
  195. data/dyncall/dyncallback/dyncall_callback_mips.c +61 -0
  196. data/dyncall/dyncallback/dyncall_callback_mips.h +42 -0
  197. data/dyncall/dyncallback/dyncall_callback_ppc32.S +33 -0
  198. data/dyncall/dyncallback/dyncall_callback_ppc32.c +60 -0
  199. data/dyncall/dyncallback/dyncall_callback_ppc32.h +43 -0
  200. data/dyncall/dyncallback/dyncall_callback_ppc32_apple.s +180 -0
  201. data/dyncall/dyncallback/dyncall_callback_sparc32.c +57 -0
  202. data/dyncall/dyncallback/dyncall_callback_sparc32.h +43 -0
  203. data/dyncall/dyncallback/dyncall_callback_sparc32.s +30 -0
  204. data/dyncall/dyncallback/dyncall_callback_sparc64.c +57 -0
  205. data/dyncall/dyncallback/dyncall_callback_sparc64.s +30 -0
  206. data/dyncall/dyncallback/dyncall_callback_x64.S +187 -0
  207. data/dyncall/dyncallback/dyncall_callback_x64.c +69 -0
  208. data/dyncall/dyncallback/dyncall_callback_x64.h +44 -0
  209. data/dyncall/dyncallback/dyncall_callback_x64_apple.s +122 -0
  210. data/dyncall/dyncallback/dyncall_callback_x64_gas.s +119 -0
  211. data/dyncall/dyncallback/dyncall_callback_x64_gas_w64.s +102 -0
  212. data/dyncall/dyncallback/dyncall_callback_x64_masm.asm +89 -0
  213. data/dyncall/dyncallback/dyncall_callback_x86.S +115 -0
  214. data/dyncall/dyncallback/dyncall_callback_x86.c +281 -0
  215. data/dyncall/dyncallback/dyncall_callback_x86.h +49 -0
  216. data/dyncall/dyncallback/dyncall_callback_x86_8a.s +100 -0
  217. data/dyncall/dyncallback/dyncall_callback_x86_masm.asm +74 -0
  218. data/dyncall/dyncallback/dyncall_thunk.c +47 -0
  219. data/dyncall/dyncallback/dyncall_thunk.h +84 -0
  220. data/dyncall/dyncallback/dyncall_thunk_arm32_arm.c +45 -0
  221. data/dyncall/dyncallback/dyncall_thunk_arm32_arm.h +40 -0
  222. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.c +29 -0
  223. data/dyncall/dyncallback/dyncall_thunk_arm32_thumb.h +35 -0
  224. data/dyncall/dyncallback/dyncall_thunk_mips.c +52 -0
  225. data/dyncall/dyncallback/dyncall_thunk_mips.h +37 -0
  226. data/dyncall/dyncallback/dyncall_thunk_ppc32.c +51 -0
  227. data/dyncall/dyncallback/dyncall_thunk_ppc32.h +40 -0
  228. data/dyncall/dyncallback/dyncall_thunk_sparc32.c +32 -0
  229. data/dyncall/dyncallback/dyncall_thunk_sparc32.h +36 -0
  230. data/dyncall/dyncallback/dyncall_thunk_sparc64.c +32 -0
  231. data/dyncall/dyncallback/dyncall_thunk_sparc64.h +36 -0
  232. data/dyncall/dyncallback/dyncall_thunk_x64.c +48 -0
  233. data/dyncall/dyncallback/dyncall_thunk_x64.h +39 -0
  234. data/dyncall/dyncallback/dyncall_thunk_x86.c +44 -0
  235. data/dyncall/dyncallback/dyncall_thunk_x86.h +39 -0
  236. data/dyncall/dyncallback/dyncallback.3 +134 -0
  237. data/dyncall/dyncallback/gen-masm.sh +8 -0
  238. data/dyncall/dyncallback/mkfile +29 -0
  239. data/dyncall/dynload/CMakeLists.txt +25 -0
  240. data/dyncall/dynload/DynLoadConfig.cmake +3 -0
  241. data/dyncall/dynload/Makefile.M +10 -0
  242. data/dyncall/dynload/Makefile.embedded +22 -0
  243. data/dyncall/dynload/Makefile.generic +18 -0
  244. data/dyncall/dynload/Nmakefile +57 -0
  245. data/dyncall/dynload/README.txt +113 -0
  246. data/dyncall/dynload/TODO +20 -0
  247. data/dyncall/dynload/dynMakefile +4 -0
  248. data/dyncall/dynload/dynload.3 +64 -0
  249. data/dyncall/dynload/dynload.c +38 -0
  250. data/dyncall/dynload/dynload.h +65 -0
  251. data/dyncall/dynload/dynload_alloc.h +40 -0
  252. data/dyncall/dynload/dynload_darwin.c +89 -0
  253. data/dyncall/dynload/dynload_syms.c +38 -0
  254. data/dyncall/dynload/dynload_syms_elf.c +214 -0
  255. data/dyncall/dynload/dynload_syms_mach-o.c +167 -0
  256. data/dyncall/dynload/dynload_syms_pe.c +109 -0
  257. data/dyncall/dynload/dynload_unix.c +57 -0
  258. data/dyncall/dynload/dynload_windows.c +59 -0
  259. data/dyncall/mkfile +36 -0
  260. data/dyncall/portasm/README.txt +42 -0
  261. data/dyncall/portasm/gen-masm.sh +3 -0
  262. data/dyncall/portasm/portasm-arm.S +36 -0
  263. data/dyncall/portasm/portasm-ppc.S +98 -0
  264. data/dyncall/portasm/portasm-x64-att.S +155 -0
  265. data/dyncall/portasm/portasm-x86.S +127 -0
  266. metadata +311 -0
@@ -0,0 +1,59 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_arm32_thumb.h
6
+ Description:
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ /*
28
+
29
+ dyncall callvm for 32bit ARM32 family of processors
30
+
31
+ SUPPORTED CALLING CONVENTIONS
32
+ armthumbcall
33
+
34
+ REVISION
35
+ 2008/08/12 initial
36
+
37
+ */
38
+
39
+
40
+ #ifndef DYNCALL_CALLVM_ARM32_THUMB_H
41
+ #define DYNCALL_CALLVM_ARM32_THUMB_H
42
+
43
+ #include "dyncall_call_arm32_thumb.h"
44
+ #include "dyncall_callvm.h"
45
+ #include "dyncall_vector.h"
46
+
47
+
48
+ typedef struct
49
+ {
50
+ DCCallVM mInterface;
51
+ DCpointer mpCallFunc;
52
+ DCVecHead mVecHead;
53
+ } DCCallVM_arm32_thumb;
54
+
55
+ DCCallVM* dcNewCallVM_arm32_thumb(DCsize size);
56
+
57
+
58
+ #endif /* DYNCALL_CALLVM_ARM32_THUMB_H */
59
+
@@ -0,0 +1,33 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_base.c
6
+ Description: ARM 32-bit "thumb" ABI callvm implementation
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #include "dyncall_callvm.h"
28
+
29
+ void dc_callvm_base_init(DCCallVM* pInstance, DCCallVM_vt* pVTable)
30
+ {
31
+ pInstance->mVTpointer = pVTable;
32
+ pInstance->mError = DC_ERROR_NONE;
33
+ }
@@ -0,0 +1,40 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_mips.c
6
+ Description: ARM 32-bit "thumb" ABI callvm implementation
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #if defined(__GNUC__)
28
+
29
+ #if defined(DC__ABI_MIPS_O32)
30
+ #include "dyncall_callvm_mips_o32.c"
31
+ #elif defined(DC__ABI_MIPS_N64)
32
+ #include "dyncall_callvm_mips_n64.c"
33
+ #elif defined(DC__ABI_MIPS_N32)
34
+ #include "dyncall_callvm_mips_n32.c"
35
+ #else
36
+ #include "dyncall_callvm_mips_eabi.c"
37
+ #endif
38
+
39
+ #endif
40
+
@@ -0,0 +1,37 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_mips.h
6
+ Description:
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #ifndef DYNCALL_CALLVM_MIPS_H
28
+ #define DYNCALL_CALLVM_MIPS_H
29
+
30
+ /* Suported ABIs: */
31
+
32
+ #include "dyncall_callvm_mips_o32.h"
33
+ #include "dyncall_callvm_mips_eabi.h"
34
+ #include "dyncall_callvm_mips_n64.h"
35
+
36
+ #endif /* DYNCALL_CALLVM_MIPS_H */
37
+
@@ -0,0 +1,181 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_mips_eabi.c
6
+ Description: Implementation of Call VM for mips "eabi" abi.
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ #include "dyncall_callvm_mips_eabi.h"
28
+ #include "dyncall_alloc.h"
29
+
30
+ static void dc_callvm_reset_mips_eabi(DCCallVM* in_self)
31
+ {
32
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
33
+ dcVecReset(&self->mVecHead);
34
+ self->mIntRegs = 0;
35
+ self->mSingleRegs = 0;
36
+ }
37
+
38
+ static DCCallVM* dc_callvm_new_mips_eabi(DCCallVM_vt* vt, DCsize size)
39
+ {
40
+ /* Store at least 16 bytes (4 words) for internal spill area. Assembly code depends on it. */
41
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)dcAllocMem(sizeof(DCCallVM_mips_eabi)+size+16);
42
+ dc_callvm_base_init(&self->mInterface, vt);
43
+ dcVecInit(&self->mVecHead, size);
44
+ dc_callvm_reset_mips_eabi( (DCCallVM*) self );
45
+ return (DCCallVM*)self;
46
+ }
47
+
48
+
49
+ static void dc_callvm_free_mips_eabi(DCCallVM* in_self)
50
+ {
51
+ dcFreeMem(in_self);
52
+ }
53
+
54
+ static void dc_callvm_mode_mips_eabi(DCCallVM* in_self,DCint mode)
55
+ {
56
+ switch(mode) {
57
+ case DC_CALL_C_DEFAULT:
58
+ case DC_CALL_C_ELLIPSIS:
59
+ case DC_CALL_C_MIPS32_EABI:
60
+ break;
61
+ default:
62
+ in_self->mError = DC_ERROR_UNSUPPORTED_MODE; return;
63
+ }
64
+ }
65
+
66
+ /* arg int -- fillup integer register file OR push on stack */
67
+
68
+ static void dc_callvm_argInt_mips_eabi(DCCallVM* in_self, DCint i)
69
+ {
70
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
71
+ /* fillup integer register file */
72
+ if (self->mIntRegs < 8)
73
+ self->mRegData.mIntData[self->mIntRegs++] = i;
74
+ else
75
+ dcVecAppend(&self->mVecHead, &i, sizeof(DCint));
76
+ }
77
+
78
+ static void dc_callvm_argPointer_mips_eabi(DCCallVM* in_self, DCpointer x)
79
+ {
80
+ dc_callvm_argInt_mips_eabi(in_self, * (DCint*) &x );
81
+ }
82
+
83
+ static void dc_callvm_argBool_mips_eabi(DCCallVM* in_self, DCbool x)
84
+ {
85
+ dc_callvm_argInt_mips_eabi(in_self, (DCint)x);
86
+ }
87
+
88
+ static void dc_callvm_argChar_mips_eabi(DCCallVM* in_self, DCchar x)
89
+ {
90
+ dc_callvm_argInt_mips_eabi(in_self, (DCint)x);
91
+ }
92
+
93
+ static void dc_callvm_argShort_mips_eabi(DCCallVM* in_self, DCshort x)
94
+ {
95
+ dc_callvm_argInt_mips_eabi(in_self, (DCint)x);
96
+ }
97
+
98
+ static void dc_callvm_argLong_mips_eabi(DCCallVM* in_self, DClong x)
99
+ {
100
+ dc_callvm_argInt_mips_eabi(in_self, (DCint)x);
101
+ }
102
+
103
+ static void dc_callvm_argLongLong_mips_eabi(DCCallVM* in_self, DClonglong Lv)
104
+ {
105
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
106
+
107
+ if (self->mIntRegs < 7) {
108
+ DCint* p = (DCint*) &Lv;
109
+ /* skip odd register (align 64 bit) */
110
+ self->mIntRegs += self->mIntRegs & 1;
111
+ self->mRegData.mIntData[self->mIntRegs++] = p[0];
112
+ self->mRegData.mIntData[self->mIntRegs++] = p[1];
113
+ } else {
114
+ self->mIntRegs = 8;
115
+ /* 64 bit values need to be aligned on 8 byte boundaries */
116
+ dcVecSkip(&self->mVecHead, dcVecSize(&self->mVecHead) & 4);
117
+ dcVecAppend(&self->mVecHead, &Lv, sizeof(DClonglong));
118
+ }
119
+ }
120
+
121
+ static void dc_callvm_argFloat_mips_eabi(DCCallVM* in_self, DCfloat x)
122
+ {
123
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
124
+ if (self->mSingleRegs < 8) {
125
+ self->mRegData.mSingleData[self->mSingleRegs++] = x;
126
+ } else {
127
+ dcVecAppend(&self->mVecHead, &x, sizeof(DCfloat) );
128
+ }
129
+ }
130
+
131
+ static void dc_callvm_argDouble_mips_eabi(DCCallVM* in_self, DCdouble x)
132
+ {
133
+ DClonglong* p = (DClonglong*) &x;
134
+ dc_callvm_argLongLong_mips_eabi(in_self, *p);
135
+ }
136
+
137
+ /* Call. */
138
+ void dc_callvm_call_mips_eabi(DCCallVM* in_self, DCpointer target)
139
+ {
140
+ DCCallVM_mips_eabi* self = (DCCallVM_mips_eabi*)in_self;
141
+ dcCall_mips_eabi(target, &self->mRegData, dcVecSize(&self->mVecHead), dcVecData(&self->mVecHead));
142
+ }
143
+
144
+ DCCallVM_vt gVT_mips_eabi =
145
+ {
146
+ &dc_callvm_free_mips_eabi
147
+ , &dc_callvm_reset_mips_eabi
148
+ , &dc_callvm_mode_mips_eabi
149
+ , &dc_callvm_argBool_mips_eabi
150
+ , &dc_callvm_argChar_mips_eabi
151
+ , &dc_callvm_argShort_mips_eabi
152
+ , &dc_callvm_argInt_mips_eabi
153
+ , &dc_callvm_argLong_mips_eabi
154
+ , &dc_callvm_argLongLong_mips_eabi
155
+ , &dc_callvm_argFloat_mips_eabi
156
+ , &dc_callvm_argDouble_mips_eabi
157
+ , &dc_callvm_argPointer_mips_eabi
158
+ , NULL /* argStruct */
159
+ , (DCvoidvmfunc*) &dc_callvm_call_mips_eabi
160
+ , (DCboolvmfunc*) &dc_callvm_call_mips_eabi
161
+ , (DCcharvmfunc*) &dc_callvm_call_mips_eabi
162
+ , (DCshortvmfunc*) &dc_callvm_call_mips_eabi
163
+ , (DCintvmfunc*) &dc_callvm_call_mips_eabi
164
+ , (DClongvmfunc*) &dc_callvm_call_mips_eabi
165
+ , (DClonglongvmfunc*) &dc_callvm_call_mips_eabi
166
+ , (DCfloatvmfunc*) &dc_callvm_call_mips_eabi
167
+ , (DCdoublevmfunc*) &dc_callvm_call_mips_eabi
168
+ , (DCpointervmfunc*) &dc_callvm_call_mips_eabi
169
+ , NULL /* callStruct */
170
+ };
171
+
172
+ DCCallVM* dcNewCallVM_mips_eabi(DCsize size)
173
+ {
174
+ return dc_callvm_new_mips_eabi(&gVT_mips_eabi, size);
175
+ }
176
+
177
+ DCCallVM* dcNewCallVM(DCsize size)
178
+ {
179
+ return dcNewCallVM_mips_eabi(size);
180
+ }
181
+
@@ -0,0 +1,61 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_mips_eabi.h
6
+ Description:
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ /*
28
+
29
+ dyncall callvm for 32bit MIPS family of processors
30
+
31
+ SUPPORTED CALLING CONVENTIONS
32
+ eabi
33
+
34
+ REVISION
35
+ 2008/01/03 initial
36
+
37
+ */
38
+
39
+
40
+ #ifndef DYNCALL_CALLVM_MIPS_EABI_H
41
+ #define DYNCALL_CALLVM_MIPS_EABI_H
42
+
43
+ #include "dyncall_call_mips_eabi.h"
44
+ #include "dyncall_callvm.h"
45
+ #include "dyncall_vector.h"
46
+
47
+
48
+ typedef struct
49
+ {
50
+ DCCallVM mInterface;
51
+ int mIntRegs;
52
+ int mSingleRegs;
53
+ struct DCRegData_mips_eabi mRegData;
54
+ DCVecHead mVecHead;
55
+ } DCCallVM_mips_eabi;
56
+
57
+ DCCallVM* dcNewCallVM_mips_eabi(DCsize size);
58
+
59
+
60
+ #endif /* DYNCALL_CALLVM_MIPS_EABI_H */
61
+
@@ -0,0 +1,268 @@
1
+ /*
2
+
3
+ Package: dyncall
4
+ Library: dyncall
5
+ File: dyncall/dyncall_callvm_mips_n32.c
6
+ Description: mips "n32" ABI callvm implementation
7
+ License:
8
+
9
+ Copyright (c) 2007-2011 Daniel Adler <dadler@uni-goettingen.de>,
10
+ Tassilo Philipp <tphilipp@potion-studios.com>
11
+
12
+ Permission to use, copy, modify, and distribute this software for any
13
+ purpose with or without fee is hereby granted, provided that the above
14
+ copyright notice and this permission notice appear in all copies.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
17
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
18
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
19
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
21
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
22
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23
+
24
+ */
25
+
26
+
27
+ /*
28
+
29
+ dyncall callvm for 64bit MIPS family of processors
30
+
31
+ SUPPORTED CALLING CONVENTIONS
32
+ n32
33
+
34
+ REVISION
35
+ 2010/05/30 initial
36
+
37
+ in contrast to o32, there is no space reserved for parameters
38
+ passed over registers.
39
+ more registers are used and registers are always used.
40
+
41
+ stack is always 16-byte aligned at entry (call to call-kernel automatically
42
+ aligns argument stack.
43
+
44
+ integer and float register-file is interleaved either taking one slot up
45
+ skipping the other.
46
+
47
+
48
+ */
49
+
50
+
51
+ #include "dyncall_callvm_mips_n32.h"
52
+ #include "dyncall_alloc.h"
53
+ #include "dyncall_utils.h"
54
+
55
+ static void dc_callvm_reset_mips_n32(DCCallVM* in_self)
56
+ {
57
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
58
+ dcVecReset(&self->mVecHead);
59
+ self->mRegCount = 0;
60
+ self->mRegData.mUseDouble = 0LL;
61
+ }
62
+
63
+ static DCCallVM* dc_callvm_new_mips_n32(DCCallVM_vt* vt, DCsize size)
64
+ {
65
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)dcAllocMem(sizeof(DCCallVM_mips_n32)+size);
66
+ dc_callvm_base_init(&self->mInterface, vt);
67
+ dcVecInit(&self->mVecHead, size);
68
+ dc_callvm_reset_mips_n32( (DCCallVM*) self );
69
+ return (DCCallVM*)self;
70
+ }
71
+
72
+
73
+ static void dc_callvm_free_mips_n32(DCCallVM* in_self)
74
+ {
75
+ dcFreeMem(in_self);
76
+ }
77
+
78
+ /* pass arguments :
79
+
80
+ - promote to 64-bit integer.
81
+ - fill up integers and float - left-to-right otherwise go over stack.
82
+ */
83
+
84
+ /* arg int -- fillup 64-bit integer register file OR push on stack */
85
+
86
+ static void dc_callvm_argLongLong_mips_n32(DCCallVM* in_self, DClonglong Lv)
87
+ {
88
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
89
+ /* fillup integer register file */
90
+ if (self->mRegCount < 8)
91
+ self->mRegData.mIntData[self->mRegCount++] = Lv;
92
+ else
93
+ dcVecAppend(&self->mVecHead, &Lv, sizeof(DClonglong));
94
+ }
95
+
96
+ static void dc_callvm_argInt_mips_n32(DCCallVM* in_self, DCint i)
97
+ {
98
+ dc_callvm_argLongLong_mips_n32(in_self, (DClonglong) i );
99
+ }
100
+
101
+ static void dc_callvm_argPointer_mips_n32(DCCallVM* in_self, DCpointer x)
102
+ {
103
+ dc_callvm_argLongLong_mips_n32(in_self, * (DClonglong*) &x );
104
+ }
105
+
106
+ static void dc_callvm_argBool_mips_n32(DCCallVM* in_self, DCbool x)
107
+ {
108
+ dc_callvm_argLongLong_mips_n32(in_self, (DClonglong)x);
109
+ }
110
+
111
+ static void dc_callvm_argChar_mips_n32(DCCallVM* in_self, DCchar x)
112
+ {
113
+ dc_callvm_argLongLong_mips_n32(in_self, (DClonglong)x);
114
+ }
115
+
116
+ static void dc_callvm_argShort_mips_n32(DCCallVM* in_self, DCshort x)
117
+ {
118
+ dc_callvm_argLongLong_mips_n32(in_self, (DClonglong)x);
119
+ }
120
+
121
+ static void dc_callvm_argLong_mips_n32(DCCallVM* in_self, DClong x)
122
+ {
123
+ dc_callvm_argLongLong_mips_n32(in_self, (DClonglong)x);
124
+ }
125
+
126
+ static void dc_callvm_argDouble_mips_n32(DCCallVM* in_self, DCdouble x)
127
+ {
128
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
129
+ if (self->mRegCount < 8) {
130
+ self->mRegData.mUseDouble |= 1<<( self->mRegCount );
131
+ self->mRegData.mFloatData[self->mRegCount++].d = x;
132
+ } else {
133
+ dcVecAppend(&self->mVecHead, &x, sizeof(DCdouble) );
134
+ }
135
+ }
136
+
137
+ static void dc_callvm_argFloat_mips_n32(DCCallVM* in_self, DCfloat x)
138
+ {
139
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
140
+ if (self->mRegCount < 8) {
141
+ /*self->mRegData.mFloatData[self->mRegCount++].d = (DCdouble) x;*/
142
+ self->mRegData.mFloatData[self->mRegCount++].f = x;
143
+ } else {
144
+ dcVecAppend(&self->mVecHead, &x, sizeof(DCfloat) );
145
+ dcVecSkip(&self->mVecHead, sizeof(DCfloat) );
146
+ }
147
+ }
148
+
149
+
150
+ /* Ellipsis calls:
151
+ - float is promoted to double (due to ANSI C).
152
+ - double is passed via integer register-file (due to MIPS ABI).
153
+ */
154
+
155
+ static void dc_callvm_argDouble_mips_n32_ellipsis(DCCallVM* in_self, DCdouble x)
156
+ {
157
+ dc_callvm_argLongLong_mips_n32(in_self, * ( (DClonglong*) &x ) );
158
+ }
159
+
160
+ static void dc_callvm_argFloat_mips_n32_ellipsis(DCCallVM* in_self, DCfloat x)
161
+ {
162
+ dc_callvm_argDouble_mips_n32_ellipsis(in_self, (DCdouble) x );
163
+ }
164
+
165
+
166
+ /* Call. */
167
+
168
+ void dc_callvm_call_mips_n32(DCCallVM* in_self, DCpointer target)
169
+ {
170
+ DCCallVM_mips_n32* self = (DCCallVM_mips_n32*)in_self;
171
+ /* at minimum provide 16-bytes
172
+ which hold the first four integer register as spill area
173
+ and are automatically loaded to $4-$7
174
+ */
175
+ size_t size = DC_MAX(16, ( ( (unsigned) dcVecSize(&self->mVecHead) ) +7UL ) & (-8UL) );
176
+ dcCall_mips_n32(target, &self->mRegData, size, dcVecData(&self->mVecHead));
177
+ }
178
+
179
+ /* Forward Declaration. */
180
+ static void dc_callvm_mode_mips_n32(DCCallVM* in_self,DCint mode);
181
+
182
+ DCCallVM_vt gVT_mips_n32 =
183
+ {
184
+ &dc_callvm_free_mips_n32
185
+ , &dc_callvm_reset_mips_n32
186
+ , &dc_callvm_mode_mips_n32
187
+ , &dc_callvm_argBool_mips_n32
188
+ , &dc_callvm_argChar_mips_n32
189
+ , &dc_callvm_argShort_mips_n32
190
+ , &dc_callvm_argInt_mips_n32
191
+ , &dc_callvm_argLong_mips_n32
192
+ , &dc_callvm_argLongLong_mips_n32
193
+ , &dc_callvm_argFloat_mips_n32
194
+ , &dc_callvm_argDouble_mips_n32
195
+ , &dc_callvm_argPointer_mips_n32
196
+ , NULL /* argStruct */
197
+ , (DCvoidvmfunc*) &dc_callvm_call_mips_n32
198
+ , (DCboolvmfunc*) &dc_callvm_call_mips_n32
199
+ , (DCcharvmfunc*) &dc_callvm_call_mips_n32
200
+ , (DCshortvmfunc*) &dc_callvm_call_mips_n32
201
+ , (DCintvmfunc*) &dc_callvm_call_mips_n32
202
+ , (DClongvmfunc*) &dc_callvm_call_mips_n32
203
+ , (DClonglongvmfunc*) &dc_callvm_call_mips_n32
204
+ , (DCfloatvmfunc*) &dc_callvm_call_mips_n32
205
+ , (DCdoublevmfunc*) &dc_callvm_call_mips_n32
206
+ , (DCpointervmfunc*) &dc_callvm_call_mips_n32
207
+ , NULL /* callStruct */
208
+ };
209
+
210
+ DCCallVM_vt gVT_mips_n32_ellipsis =
211
+ {
212
+ &dc_callvm_free_mips_n32
213
+ , &dc_callvm_reset_mips_n32
214
+ , &dc_callvm_mode_mips_n32
215
+ , &dc_callvm_argBool_mips_n32
216
+ , &dc_callvm_argChar_mips_n32
217
+ , &dc_callvm_argShort_mips_n32
218
+ , &dc_callvm_argInt_mips_n32
219
+ , &dc_callvm_argLong_mips_n32
220
+ , &dc_callvm_argLongLong_mips_n32
221
+ , &dc_callvm_argFloat_mips_n32_ellipsis
222
+ , &dc_callvm_argDouble_mips_n32_ellipsis
223
+ , &dc_callvm_argPointer_mips_n32
224
+ , NULL /* argStruct */
225
+ , (DCvoidvmfunc*) &dc_callvm_call_mips_n32
226
+ , (DCboolvmfunc*) &dc_callvm_call_mips_n32
227
+ , (DCcharvmfunc*) &dc_callvm_call_mips_n32
228
+ , (DCshortvmfunc*) &dc_callvm_call_mips_n32
229
+ , (DCintvmfunc*) &dc_callvm_call_mips_n32
230
+ , (DClongvmfunc*) &dc_callvm_call_mips_n32
231
+ , (DClonglongvmfunc*) &dc_callvm_call_mips_n32
232
+ , (DCfloatvmfunc*) &dc_callvm_call_mips_n32
233
+ , (DCdoublevmfunc*) &dc_callvm_call_mips_n32
234
+ , (DCpointervmfunc*) &dc_callvm_call_mips_n32
235
+ , NULL /* callStruct */
236
+ };
237
+
238
+ static void dc_callvm_mode_mips_n32(DCCallVM* self,DCint mode)
239
+ {
240
+ switch(mode) {
241
+ case DC_CALL_C_DEFAULT:
242
+ self->mVTpointer = &gVT_mips_n32;
243
+ break;
244
+ case DC_CALL_C_ELLIPSIS:
245
+ self->mVTpointer = &gVT_mips_n32_ellipsis;
246
+ break;
247
+ default:
248
+ self->mError = DC_ERROR_UNSUPPORTED_MODE;
249
+ break;
250
+ }
251
+ }
252
+
253
+ DCCallVM* dcNewCallVM_mips_n32(DCsize size)
254
+ {
255
+ return dc_callvm_new_mips_n32(&gVT_mips_n32, size);
256
+ }
257
+
258
+ DCCallVM* dcNewCallVM_mips_n32_ellipsis(DCsize size)
259
+ {
260
+ return dc_callvm_new_mips_n32(&gVT_mips_n32_ellipsis, size);
261
+ }
262
+
263
+
264
+ DCCallVM* dcNewCallVM(DCsize size)
265
+ {
266
+ return dcNewCallVM_mips_n32(size);
267
+ }
268
+