Subversion Repositories HelenOS

Rev

Rev 2482 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2482 Rev 2586
Line 33... Line 33...
33
 */
33
 */
34
 
34
 
35
#ifndef LIBC_ppc32_THREAD_H_
35
#ifndef LIBC_ppc32_THREAD_H_
36
#define LIBC_ppc32_THREAD_H_
36
#define LIBC_ppc32_THREAD_H_
37
 
37
 
38
#define PPC_TP_OFFSET 0x7000
-
 
39
 
-
 
40
typedef struct {
-
 
41
    void *fibril_data;
-
 
42
} tcb_t;
-
 
43
 
-
 
44
static inline void __tcb_set(tcb_t *tcb)
-
 
45
{
-
 
46
    void *tp = tcb;
-
 
47
    tp += PPC_TP_OFFSET + sizeof(tcb_t);
-
 
48
   
-
 
49
    asm volatile (
-
 
50
        "mr %%r2, %0\n"
-
 
51
        :
-
 
52
        : "r" (tp)
-
 
53
    );
-
 
54
}
-
 
55
 
-
 
56
static inline tcb_t * __tcb_get(void)
-
 
57
{
-
 
58
    void * retval;
-
 
59
   
-
 
60
    asm volatile (
-
 
61
        "mr %0, %%r2\n"
-
 
62
        : "=r" (retval)
-
 
63
    );
-
 
64
 
-
 
65
    return (tcb_t *)(retval - PPC_TP_OFFSET - sizeof(tcb_t));
-
 
66
}
-
 
67
 
-
 
68
#endif
38
#endif
69
 
39
 
70
/** @}
40
/** @}
71
 */
41
 */