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

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [powerpc/] [kernel/] [vdso64/] [datapage.S] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 * Access to the shared data page by the vDSO & syscall map
3
 *
4
 * Copyright (C) 2004 Benjamin Herrenschmuidt (benh@kernel.crashing.org), IBM Corp.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version
9
 * 2 of the License, or (at your option) any later version.
10
 */
11
 
12
#include 
13
#include 
14
#include 
15
#include 
16
#include 
17
 
18
        .text
19
V_FUNCTION_BEGIN(__get_datapage)
20
  .cfi_startproc
21
        /* We don't want that exposed or overridable as we want other objects
22
         * to be able to bl directly to here
23
         */
24
        .protected __get_datapage
25
        .hidden __get_datapage
26
 
27
        mflr    r0
28
  .cfi_register lr,r0
29
 
30
        bcl     20,31,1f
31
        .global __kernel_datapage_offset;
32
__kernel_datapage_offset:
33
        .long   0
34
1:
35
        mflr    r3
36
        mtlr    r0
37
        lwz     r0,0(r3)
38
        add     r3,r0,r3
39
        blr
40
  .cfi_endproc
41
V_FUNCTION_END(__get_datapage)
42
 
43
/*
44
 * void *__kernel_get_syscall_map(unsigned int *syscall_count) ;
45
 *
46
 * returns a pointer to the syscall map. the map is agnostic to the
47
 * size of "long", unlike kernel bitops, it stores bits from top to
48
 * bottom so that memory actually contains a linear bitmap
49
 * check for syscall N by testing bit (0x80000000 >> (N & 0x1f)) of
50
 * 32 bits int at N >> 5.
51
 */
52
V_FUNCTION_BEGIN(__kernel_get_syscall_map)
53
  .cfi_startproc
54
        mflr    r12
55
  .cfi_register lr,r12
56
        mr      r4,r3
57
        bl      V_LOCAL_FUNC(__get_datapage)
58
        mtlr    r12
59
        addi    r3,r3,CFG_SYSCALL_MAP64
60
        cmpli   cr0,r4,0
61
        crclr   cr0*4+so
62
        beqlr
63
        li      r0,__NR_syscalls
64
        stw     r0,0(r4)
65
        blr
66
  .cfi_endproc
67
V_FUNCTION_END(__kernel_get_syscall_map)
68
 
69
 
70
/*
71
 * void unsigned long  __kernel_get_tbfreq(void);
72
 *
73
 * returns the timebase frequency in HZ
74
 */
75
V_FUNCTION_BEGIN(__kernel_get_tbfreq)
76
  .cfi_startproc
77
        mflr    r12
78
  .cfi_register lr,r12
79
        bl      V_LOCAL_FUNC(__get_datapage)
80
        ld      r3,CFG_TB_TICKS_PER_SEC(r3)
81
        mtlr    r12
82
        crclr   cr0*4+so
83
        blr
84
  .cfi_endproc
85
V_FUNCTION_END(__kernel_get_tbfreq)

powered by: WebSVN 2.1.0

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