0003-Revert-Move-asm-machine-dependent-files-to-src-folde.patch 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424
  1. Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
  2. From 5e756d4d8df2949cb3b6e51532d3016cbb276fd7 Mon Sep 17 00:00:00 2001
  3. From: Ivan Maidanski <ivmai@mail.ru>
  4. Date: Fri, 27 Feb 2015 21:32:22 +0300
  5. Subject: [PATCH 004/135] Revert "Move asm machine-dependent files to 'src'
  6. folder" (partly)
  7. Asm files moved back to base folder to avoid build issues (reported
  8. for NetBSD and Solaris on Sparc). Alternative way is to adjust
  9. configure.ac and Makefile.am properly but it requires more efforts
  10. (including testing).
  11. * Makefile.am (EXTRA_libgc_la_SOURCES): Remove "src/" prefix.
  12. * Makefile.direct (SRCS, mach_dep.o): Likewise.
  13. * src/ia64_save_regs_in_stack.s: Move to base folder.
  14. * src/sparc_mach_dep.S: Likewise.
  15. * src/sparc_netbsd_mach_dep.s: Likewise.
  16. * src/sparc_sunos4_mach_dep.s: Likewise.
  17. ---
  18. Makefile.am | 4 +--
  19. Makefile.direct | 20 +++++++-------
  20. ia64_save_regs_in_stack.s | 11 ++++++++
  21. sparc_mach_dep.S | 61 +++++++++++++++++++++++++++++++++++++++++
  22. sparc_netbsd_mach_dep.s | 34 +++++++++++++++++++++++
  23. sparc_sunos4_mach_dep.s | 32 +++++++++++++++++++++
  24. src/ia64_save_regs_in_stack.s | 11 --------
  25. src/sparc_mach_dep.S | 61 -----------------------------------------
  26. src/sparc_netbsd_mach_dep.s | 34 -----------------------
  27. src/sparc_sunos4_mach_dep.s | 32 ---------------------
  28. 11 files changed, 151 insertions(+), 151 deletions(-)
  29. create mode 100644 ia64_save_regs_in_stack.s
  30. create mode 100644 sparc_mach_dep.S
  31. create mode 100644 sparc_netbsd_mach_dep.s
  32. create mode 100644 sparc_sunos4_mach_dep.s
  33. delete mode 100644 src/ia64_save_regs_in_stack.s
  34. delete mode 100644 src/sparc_mach_dep.S
  35. delete mode 100644 src/sparc_netbsd_mach_dep.s
  36. delete mode 100644 src/sparc_sunos4_mach_dep.s
  37. diff --git a/Makefile.am b/Makefile.am
  38. index f8057db..1688be2 100644
  39. --- a/Makefile.am
  40. +++ b/Makefile.am
  41. @@ -100,8 +100,8 @@ libgc_la_LIBADD = @addobjs@ $(THREADDLLIBS) $(UNWINDLIBS) $(ATOMIC_OPS_LIBS)
  42. libgc_la_DEPENDENCIES = @addobjs@
  43. libgc_la_LDFLAGS = $(extra_ldflags_libgc) -version-info 1:3:0 -no-undefined
  44. -EXTRA_libgc_la_SOURCES = src/ia64_save_regs_in_stack.s src/sparc_mach_dep.S \
  45. - src/sparc_netbsd_mach_dep.s src/sparc_sunos4_mach_dep.s
  46. +EXTRA_libgc_la_SOURCES = ia64_save_regs_in_stack.s sparc_mach_dep.S \
  47. + sparc_netbsd_mach_dep.s sparc_sunos4_mach_dep.s
  48. # C++ Interface
  49. diff --git a/Makefile.direct b/Makefile.direct
  50. index d64598b..8ab80e8 100644
  51. --- a/Makefile.direct
  52. +++ b/Makefile.direct
  53. @@ -108,8 +108,8 @@ SRCS= $(CSRCS) \
  54. include/gc_config_macros.h include/private/pthread_support.h \
  55. include/private/pthread_stop_world.h include/private/darwin_semaphore.h \
  56. include/private/darwin_stop_world.h include/private/thread_local_alloc.h \
  57. - src/ia64_save_regs_in_stack.s src/sparc_mach_dep.S \
  58. - src/sparc_netbsd_mach_dep.s src/sparc_sunos4_mach_dep.s $(CORD_SRCS)
  59. + ia64_save_regs_in_stack.s sparc_mach_dep.S \
  60. + sparc_netbsd_mach_dep.s sparc_sunos4_mach_dep.s $(CORD_SRCS)
  61. DOC_FILES= README.QUICK TODO doc/README.Mac doc/README.OS2 \
  62. doc/README.amiga doc/README.cords doc/debugging.html \
  63. @@ -309,17 +309,17 @@ dyn_test:
  64. # gcc -shared -Wl,-soname=libgc.so.0 -o libgc.so.0 $(LIBOBJS) dyn_load.lo
  65. # touch liblinuxgc.so
  66. -mach_dep.o: $(srcdir)/mach_dep.c $(srcdir)/src/sparc_mach_dep.S \
  67. - $(srcdir)/src/sparc_sunos4_mach_dep.s \
  68. - $(srcdir)/src/ia64_save_regs_in_stack.s \
  69. - $(srcdir)/src/sparc_netbsd_mach_dep.s $(UTILS)
  70. +mach_dep.o: $(srcdir)/mach_dep.c $(srcdir)/sparc_mach_dep.S \
  71. + $(srcdir)/sparc_sunos4_mach_dep.s \
  72. + $(srcdir)/ia64_save_regs_in_stack.s \
  73. + $(srcdir)/sparc_netbsd_mach_dep.s $(UTILS)
  74. rm -f mach_dep.o
  75. - ./if_mach SPARC SOLARIS $(CC) -c -o mach_dep2.o $(srcdir)/src/sparc_mach_dep.S
  76. - ./if_mach SPARC OPENBSD $(AS) -o mach_dep2.o $(srcdir)/src/sparc_sunos4_mach_dep.s
  77. - ./if_mach SPARC NETBSD $(AS) -o mach_dep2.o $(srcdir)/src/sparc_netbsd_mach_dep.s
  78. + ./if_mach SPARC SOLARIS $(CC) -c -o mach_dep2.o $(srcdir)/sparc_mach_dep.S
  79. + ./if_mach SPARC OPENBSD $(AS) -o mach_dep2.o $(srcdir)/sparc_sunos4_mach_dep.s
  80. + ./if_mach SPARC NETBSD $(AS) -o mach_dep2.o $(srcdir)/sparc_netbsd_mach_dep.s
  81. ./if_mach SPARC "" $(CC) -c -o mach_dep1.o $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
  82. ./if_mach SPARC "" ld -r -o mach_dep.o mach_dep1.o mach_dep2.o
  83. - ./if_mach IA64 "" as $(AS_ABI_FLAG) -o ia64_save_regs_in_stack.o $(srcdir)/src/ia64_save_regs_in_stack.s
  84. + ./if_mach IA64 "" as $(AS_ABI_FLAG) -o ia64_save_regs_in_stack.o $(srcdir)/ia64_save_regs_in_stack.s
  85. ./if_mach IA64 "" $(CC) -c -o mach_dep1.o $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
  86. ./if_mach IA64 "" ld -r -o mach_dep.o mach_dep1.o ia64_save_regs_in_stack.o
  87. ./if_not_there mach_dep.o $(CC) -c $(SPECIALCFLAGS) $(srcdir)/mach_dep.c
  88. diff --git a/ia64_save_regs_in_stack.s b/ia64_save_regs_in_stack.s
  89. new file mode 100644
  90. index 0000000..2b81edf
  91. --- /dev/null
  92. +++ b/ia64_save_regs_in_stack.s
  93. @@ -0,0 +1,11 @@
  94. + .text
  95. + .align 16
  96. + .global GC_save_regs_in_stack
  97. + .proc GC_save_regs_in_stack
  98. +GC_save_regs_in_stack:
  99. + .body
  100. + flushrs
  101. + ;;
  102. + mov r8=ar.bsp
  103. + br.ret.sptk.few rp
  104. + .endp GC_save_regs_in_stack
  105. diff --git a/sparc_mach_dep.S b/sparc_mach_dep.S
  106. new file mode 100644
  107. index 0000000..d204dc4
  108. --- /dev/null
  109. +++ b/sparc_mach_dep.S
  110. @@ -0,0 +1,61 @@
  111. +! SPARCompiler 3.0 and later apparently no longer handles
  112. +! asm outside functions. So we need a separate .s file
  113. +! This is only set up for SunOS 5, not SunOS 4.
  114. +! Assumes this is called before the stack contents are
  115. +! examined.
  116. +
  117. + .seg "text"
  118. + .globl GC_save_regs_in_stack
  119. +GC_save_regs_in_stack:
  120. +#if defined(__arch64__) || defined(__sparcv9)
  121. + save %sp,-128,%sp
  122. + flushw
  123. + ret
  124. + restore %sp,2047+128,%o0
  125. +#else /* 32 bit SPARC */
  126. + ta 0x3 ! ST_FLUSH_WINDOWS
  127. + mov %sp,%o0
  128. + retl
  129. + nop
  130. +#endif /* 32 bit SPARC */
  131. +.GC_save_regs_in_stack_end:
  132. + .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
  133. +
  134. +! GC_clear_stack_inner(arg, limit) clears stack area up to limit and
  135. +! returns arg. Stack clearing is crucial on SPARC, so we supply
  136. +! an assembly version that s more careful. Assumes limit is hotter
  137. +! than sp, and limit is 8 byte aligned.
  138. + .globl GC_clear_stack_inner
  139. +GC_clear_stack_inner:
  140. +#if defined(__arch64__) || defined(__sparcv9)
  141. + mov %sp,%o2 ! Save sp
  142. + add %sp,2047-8,%o3 ! p = sp+bias-8
  143. + add %o1,-2047-192,%sp ! Move sp out of the way,
  144. + ! so that traps still work.
  145. + ! Includes some extra words
  146. + ! so we can be sloppy below.
  147. +loop:
  148. + stx %g0,[%o3] ! *(long *)p = 0
  149. + cmp %o3,%o1
  150. + bgu,pt %xcc, loop ! if (p > limit) goto loop
  151. + add %o3,-8,%o3 ! p -= 8 (delay slot)
  152. + retl
  153. + mov %o2,%sp ! Restore sp., delay slot
  154. +#else /* 32 bit SPARC */
  155. + mov %sp,%o2 ! Save sp
  156. + add %sp,-8,%o3 ! p = sp-8
  157. + clr %g1 ! [g0,g1] = 0
  158. + add %o1,-0x60,%sp ! Move sp out of the way,
  159. + ! so that traps still work.
  160. + ! Includes some extra words
  161. + ! so we can be sloppy below.
  162. +loop:
  163. + std %g0,[%o3] ! *(long long *)p = 0
  164. + cmp %o3,%o1
  165. + bgu loop ! if (p > limit) goto loop
  166. + add %o3,-8,%o3 ! p -= 8 (delay slot)
  167. + retl
  168. + mov %o2,%sp ! Restore sp., delay slot
  169. +#endif /* 32 bit SPARC */
  170. +.GC_clear_stack_inner_end:
  171. + .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner
  172. diff --git a/sparc_netbsd_mach_dep.s b/sparc_netbsd_mach_dep.s
  173. new file mode 100644
  174. index 0000000..14feb15
  175. --- /dev/null
  176. +++ b/sparc_netbsd_mach_dep.s
  177. @@ -0,0 +1,34 @@
  178. +! SPARCompiler 3.0 and later apparently no longer handles
  179. +! asm outside functions. So we need a separate .s file
  180. +! This is only set up for SunOS 4.
  181. +! Assumes this is called before the stack contents are
  182. +! examined.
  183. +
  184. +#include "machine/asm.h"
  185. +
  186. + .seg "text"
  187. + .globl _C_LABEL(GC_save_regs_in_stack)
  188. + .globl _C_LABEL(GC_push_regs)
  189. +_C_LABEL(GC_save_regs_in_stack):
  190. +_C_LABEL(GC_push_regs):
  191. + ta 0x3 ! ST_FLUSH_WINDOWS
  192. + mov %sp,%o0
  193. + retl
  194. + nop
  195. +
  196. + .globl _C_LABEL(GC_clear_stack_inner)
  197. +_C_LABEL(GC_clear_stack_inner):
  198. + mov %sp,%o2 ! Save sp
  199. + add %sp,-8,%o3 ! p = sp-8
  200. + clr %g1 ! [g0,g1] = 0
  201. + add %o1,-0x60,%sp ! Move sp out of the way,
  202. + ! so that traps still work.
  203. + ! Includes some extra words
  204. + ! so we can be sloppy below.
  205. +loop:
  206. + std %g0,[%o3] ! *(long long *)p = 0
  207. + cmp %o3,%o1
  208. + bgu loop ! if (p > limit) goto loop
  209. + add %o3,-8,%o3 ! p -= 8 (delay slot)
  210. + retl
  211. + mov %o2,%sp ! Restore sp., delay slot
  212. diff --git a/sparc_sunos4_mach_dep.s b/sparc_sunos4_mach_dep.s
  213. new file mode 100644
  214. index 0000000..923f5ea
  215. --- /dev/null
  216. +++ b/sparc_sunos4_mach_dep.s
  217. @@ -0,0 +1,32 @@
  218. +! SPARCompiler 3.0 and later apparently no longer handles
  219. +! asm outside functions. So we need a separate .s file
  220. +! This is only set up for SunOS 4.
  221. +! Assumes this is called before the stack contents are
  222. +! examined.
  223. +
  224. + .seg "text"
  225. + .globl _GC_save_regs_in_stack
  226. + .globl _GC_push_regs
  227. +_GC_save_regs_in_stack:
  228. +_GC_push_regs:
  229. + ta 0x3 ! ST_FLUSH_WINDOWS
  230. + mov %sp,%o0
  231. + retl
  232. + nop
  233. +
  234. + .globl _GC_clear_stack_inner
  235. +_GC_clear_stack_inner:
  236. + mov %sp,%o2 ! Save sp
  237. + add %sp,-8,%o3 ! p = sp-8
  238. + clr %g1 ! [g0,g1] = 0
  239. + add %o1,-0x60,%sp ! Move sp out of the way,
  240. + ! so that traps still work.
  241. + ! Includes some extra words
  242. + ! so we can be sloppy below.
  243. +loop:
  244. + std %g0,[%o3] ! *(long long *)p = 0
  245. + cmp %o3,%o1
  246. + bgu loop ! if (p > limit) goto loop
  247. + add %o3,-8,%o3 ! p -= 8 (delay slot)
  248. + retl
  249. + mov %o2,%sp ! Restore sp., delay slot
  250. diff --git a/src/ia64_save_regs_in_stack.s b/src/ia64_save_regs_in_stack.s
  251. deleted file mode 100644
  252. index 2b81edf..0000000
  253. --- a/src/ia64_save_regs_in_stack.s
  254. +++ /dev/null
  255. @@ -1,11 +0,0 @@
  256. - .text
  257. - .align 16
  258. - .global GC_save_regs_in_stack
  259. - .proc GC_save_regs_in_stack
  260. -GC_save_regs_in_stack:
  261. - .body
  262. - flushrs
  263. - ;;
  264. - mov r8=ar.bsp
  265. - br.ret.sptk.few rp
  266. - .endp GC_save_regs_in_stack
  267. diff --git a/src/sparc_mach_dep.S b/src/sparc_mach_dep.S
  268. deleted file mode 100644
  269. index d204dc4..0000000
  270. --- a/src/sparc_mach_dep.S
  271. +++ /dev/null
  272. @@ -1,61 +0,0 @@
  273. -! SPARCompiler 3.0 and later apparently no longer handles
  274. -! asm outside functions. So we need a separate .s file
  275. -! This is only set up for SunOS 5, not SunOS 4.
  276. -! Assumes this is called before the stack contents are
  277. -! examined.
  278. -
  279. - .seg "text"
  280. - .globl GC_save_regs_in_stack
  281. -GC_save_regs_in_stack:
  282. -#if defined(__arch64__) || defined(__sparcv9)
  283. - save %sp,-128,%sp
  284. - flushw
  285. - ret
  286. - restore %sp,2047+128,%o0
  287. -#else /* 32 bit SPARC */
  288. - ta 0x3 ! ST_FLUSH_WINDOWS
  289. - mov %sp,%o0
  290. - retl
  291. - nop
  292. -#endif /* 32 bit SPARC */
  293. -.GC_save_regs_in_stack_end:
  294. - .size GC_save_regs_in_stack,.GC_save_regs_in_stack_end-GC_save_regs_in_stack
  295. -
  296. -! GC_clear_stack_inner(arg, limit) clears stack area up to limit and
  297. -! returns arg. Stack clearing is crucial on SPARC, so we supply
  298. -! an assembly version that s more careful. Assumes limit is hotter
  299. -! than sp, and limit is 8 byte aligned.
  300. - .globl GC_clear_stack_inner
  301. -GC_clear_stack_inner:
  302. -#if defined(__arch64__) || defined(__sparcv9)
  303. - mov %sp,%o2 ! Save sp
  304. - add %sp,2047-8,%o3 ! p = sp+bias-8
  305. - add %o1,-2047-192,%sp ! Move sp out of the way,
  306. - ! so that traps still work.
  307. - ! Includes some extra words
  308. - ! so we can be sloppy below.
  309. -loop:
  310. - stx %g0,[%o3] ! *(long *)p = 0
  311. - cmp %o3,%o1
  312. - bgu,pt %xcc, loop ! if (p > limit) goto loop
  313. - add %o3,-8,%o3 ! p -= 8 (delay slot)
  314. - retl
  315. - mov %o2,%sp ! Restore sp., delay slot
  316. -#else /* 32 bit SPARC */
  317. - mov %sp,%o2 ! Save sp
  318. - add %sp,-8,%o3 ! p = sp-8
  319. - clr %g1 ! [g0,g1] = 0
  320. - add %o1,-0x60,%sp ! Move sp out of the way,
  321. - ! so that traps still work.
  322. - ! Includes some extra words
  323. - ! so we can be sloppy below.
  324. -loop:
  325. - std %g0,[%o3] ! *(long long *)p = 0
  326. - cmp %o3,%o1
  327. - bgu loop ! if (p > limit) goto loop
  328. - add %o3,-8,%o3 ! p -= 8 (delay slot)
  329. - retl
  330. - mov %o2,%sp ! Restore sp., delay slot
  331. -#endif /* 32 bit SPARC */
  332. -.GC_clear_stack_inner_end:
  333. - .size GC_clear_stack_inner,.GC_clear_stack_inner_end-GC_clear_stack_inner
  334. diff --git a/src/sparc_netbsd_mach_dep.s b/src/sparc_netbsd_mach_dep.s
  335. deleted file mode 100644
  336. index 14feb15..0000000
  337. --- a/src/sparc_netbsd_mach_dep.s
  338. +++ /dev/null
  339. @@ -1,34 +0,0 @@
  340. -! SPARCompiler 3.0 and later apparently no longer handles
  341. -! asm outside functions. So we need a separate .s file
  342. -! This is only set up for SunOS 4.
  343. -! Assumes this is called before the stack contents are
  344. -! examined.
  345. -
  346. -#include "machine/asm.h"
  347. -
  348. - .seg "text"
  349. - .globl _C_LABEL(GC_save_regs_in_stack)
  350. - .globl _C_LABEL(GC_push_regs)
  351. -_C_LABEL(GC_save_regs_in_stack):
  352. -_C_LABEL(GC_push_regs):
  353. - ta 0x3 ! ST_FLUSH_WINDOWS
  354. - mov %sp,%o0
  355. - retl
  356. - nop
  357. -
  358. - .globl _C_LABEL(GC_clear_stack_inner)
  359. -_C_LABEL(GC_clear_stack_inner):
  360. - mov %sp,%o2 ! Save sp
  361. - add %sp,-8,%o3 ! p = sp-8
  362. - clr %g1 ! [g0,g1] = 0
  363. - add %o1,-0x60,%sp ! Move sp out of the way,
  364. - ! so that traps still work.
  365. - ! Includes some extra words
  366. - ! so we can be sloppy below.
  367. -loop:
  368. - std %g0,[%o3] ! *(long long *)p = 0
  369. - cmp %o3,%o1
  370. - bgu loop ! if (p > limit) goto loop
  371. - add %o3,-8,%o3 ! p -= 8 (delay slot)
  372. - retl
  373. - mov %o2,%sp ! Restore sp., delay slot
  374. diff --git a/src/sparc_sunos4_mach_dep.s b/src/sparc_sunos4_mach_dep.s
  375. deleted file mode 100644
  376. index 923f5ea..0000000
  377. --- a/src/sparc_sunos4_mach_dep.s
  378. +++ /dev/null
  379. @@ -1,32 +0,0 @@
  380. -! SPARCompiler 3.0 and later apparently no longer handles
  381. -! asm outside functions. So we need a separate .s file
  382. -! This is only set up for SunOS 4.
  383. -! Assumes this is called before the stack contents are
  384. -! examined.
  385. -
  386. - .seg "text"
  387. - .globl _GC_save_regs_in_stack
  388. - .globl _GC_push_regs
  389. -_GC_save_regs_in_stack:
  390. -_GC_push_regs:
  391. - ta 0x3 ! ST_FLUSH_WINDOWS
  392. - mov %sp,%o0
  393. - retl
  394. - nop
  395. -
  396. - .globl _GC_clear_stack_inner
  397. -_GC_clear_stack_inner:
  398. - mov %sp,%o2 ! Save sp
  399. - add %sp,-8,%o3 ! p = sp-8
  400. - clr %g1 ! [g0,g1] = 0
  401. - add %o1,-0x60,%sp ! Move sp out of the way,
  402. - ! so that traps still work.
  403. - ! Includes some extra words
  404. - ! so we can be sloppy below.
  405. -loop:
  406. - std %g0,[%o3] ! *(long long *)p = 0
  407. - cmp %o3,%o1
  408. - bgu loop ! if (p > limit) goto loop
  409. - add %o3,-8,%o3 ! p -= 8 (delay slot)
  410. - retl
  411. - mov %o2,%sp ! Restore sp., delay slot
  412. --
  413. 1.7.10.4