OpenCores
URL https://opencores.org/ocsvn/c0or1k/c0or1k/trunk

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [conts/] [libl4/] [include/] [l4lib/] [arch/] [arm/] [v7/] [utcb.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
#ifndef __ARM_V5_UTCB_H__
2
#define __ARM_V5_UTCB_H__
3
 
4
/*
5
 * NOTE: Any changes you make here, you *MUST* change
6
 * utcb_address() macro in syscall.S assembler.
7
 */
8
 
9
/* Read Thread ID User RW register */
10
static inline u32 l4_cp15_read_tid_usr_rw(void)
11
{
12
        volatile u32 val;
13
 
14
        __asm__ __volatile__ (
15
                "mrc  p15, 0, %0, c13, c0, 2"
16
                : "=r" (val)
17
                :
18
        );
19
 
20
        return val;
21
}
22
 
23
/* Write Thread ID User RW register */
24
static inline void l4_cp15_write_tid_usr_rw(volatile u32 val)
25
{
26
        __asm__ __volatile__ (
27
                "mcr  p15, 0, %0, c13, c0, 2"
28
                :
29
                : "r" (val)
30
        );
31
}
32
 
33
/* Read Thread ID User RO register */
34
static inline u32 l4_cp15_read_tid_usr_ro(void)
35
{
36
        volatile u32 val;
37
 
38
        __asm__ __volatile__ (
39
                "mrc  p15, 0, %0, c13, c0, 3"
40
                : "=r" (val)
41
                :
42
        );
43
 
44
        return val;
45
}
46
 
47
/*
48
 * In ARMv7, utcb resides in the userspace read-only
49
 * thread register. This adds the benefit of avoiding
50
 * dirtying the cache and extra management for smp since
51
 * it is per-cpu.
52
 */
53
static inline struct utcb *l4_get_utcb()
54
{
55
//      printf("%s: UTCB Adddress: 0x%x\n", __FUNCTION__, l4_cp15_read_tid_usr_ro());
56
        return (struct utcb *)l4_cp15_read_tid_usr_ro();
57
}
58
 
59
#endif /* __ARM_V5_UTCB_H__ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.