]> git.ipfire.org Git - thirdparty/gcc.git/blame - contrib/gthr_supp_vxw_5x.c
Update libbid according to the latest Intel Decimal Floating-Point Math Library.
[thirdparty/gcc.git] / contrib / gthr_supp_vxw_5x.c
CommitLineData
4977bab6
ZW
1/* Kernel-side additional module for the VxWorks threading support
2 logic for GCC. Written 2002 by Zack Weinberg.
3
4 This file is distributed with GCC, but it is not part of GCC.
5 The contents of this file are in the public domain. */
6
7/* If you are using the Tornado IDE, copy this file to
8 $WIND_BASE/target/config/comps/src/gthread_supp.c. Then create a
9 file named 10comp_gthread_supp.cdf in target/config/comps/vxWorks
10 with the following contents:
11
12 Component INCLUDE_GCC_GTHREAD {
13 NAME GCC 3.x gthread support (required by C++)
14 CONFIGLETTES gthread_supp.c
15 REQUIRES INCLUDE_CPLUS
16 INCLUDE_WHEN INCLUDE_CPLUS
17 _FOLDER FOLDER_CPLUS
18 }
19
20 If you are using command line builds, instead copy this file to
21 $WIND_BASE/target/src/config/gthread_supp.c, and add the following
22 block to target/src/config/usrExtra.c:
23
24 #ifdef INCLUDE_CPLUS
25 #include "../../src/config/gthread_supp.c"
26 #endif
27
28 You should now be able to rebuild your application using GCC 3.x. */
29
30#include <vxWorks.h>
31#include <taskLib.h>
32
33/* This file provides these routines: */
34extern void *__gthread_get_tsd_data (WIND_TCB *tcb);
35extern void __gthread_set_tsd_data (WIND_TCB *tcb, void *data);
36
37extern void __gthread_enter_tsd_dtor_context (WIND_TCB *tcb);
38extern void __gthread_leave_tsd_dtor_context (WIND_TCB *tcb);
39
40/* Set and retrieve the TSD data block for the task TCB.
41
42 Possible choices for TSD_SLOT are:
43 reserved1
44 reserved2
45 spare1
46 spare2
47 spare3
48 spare4
49 (these are all fields of the TCB structure; all have type 'int').
50
51 If you find that the slot chosen by default is already used for
52 something else, simply change the #define below and recompile this
53 file. No other file should reference TSD_SLOT directly. */
54
55/* WARNING: This code is not 64-bit clean (it assumes that a pointer
56 can be held in an 'int' without truncation). As much of the rest
57 of VxWorks also makes this assumption, we can't really avoid it. */
58
59#define TSD_SLOT reserved1
60
61void *
62__gthread_get_tsd_data (WIND_TCB *tcb)
63{
64 return (void *) (tcb->TSD_SLOT);
65}
66
67void
68__gthread_set_tsd_data (WIND_TCB *tcb, void *data)
69{
70 tcb->TSD_SLOT = (int) data;
71}
72
73/* Enter and leave "TSD destructor context". This is defined as a
74 state in which it is safe to call free() from a task delete hook
75 on a memory block allocated by the task being deleted.
76 For VxWorks 5.x, nothing needs to be done. */
77
78#if __GNUC__ >= 2
79#define UNUSED __attribute__((unused))
80#else
81#define UNUSED
82#endif
83
84void
85__gthread_enter_tsd_dtor_context (WIND_TCB *tcb UNUSED)
86{
87}
88
89void
90__gthread_leave_tsd_dtor_context (WIND_TCB *tcb UNUSED)
91{
92}