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

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [kernel/] [extable.c] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/* Rewritten by Rusty Russell, on the backs of many others...
2
   Copyright (C) 2001 Rusty Russell, 2002 Rusty Russell IBM.
3
 
4
    This program is free software; you can redistribute it and/or modify
5
    it under the terms of the GNU General Public License as published by
6
    the Free Software Foundation; either version 2 of the License, or
7
    (at your option) any later version.
8
 
9
    This program is distributed in the hope that it will be useful,
10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
    GNU General Public License for more details.
13
 
14
    You should have received a copy of the GNU General Public License
15
    along with this program; if not, write to the Free Software
16
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
*/
18
#include <linux/module.h>
19
#include <linux/init.h>
20
#include <asm/uaccess.h>
21
#include <asm/sections.h>
22
 
23
extern struct exception_table_entry __start___ex_table[];
24
extern struct exception_table_entry __stop___ex_table[];
25
 
26
/* Sort the kernel's built-in exception table */
27
void __init sort_main_extable(void)
28
{
29
        sort_extable(__start___ex_table, __stop___ex_table);
30
}
31
 
32
/* Given an address, look for it in the exception tables. */
33
const struct exception_table_entry *search_exception_tables(unsigned long addr)
34
{
35
        const struct exception_table_entry *e;
36
 
37
        e = search_extable(__start___ex_table, __stop___ex_table-1, addr);
38
        if (!e)
39
                e = search_module_extables(addr);
40
        return e;
41
}
42
 
43
int core_kernel_text(unsigned long addr)
44
{
45
        if (addr >= (unsigned long)_stext &&
46
            addr <= (unsigned long)_etext)
47
                return 1;
48
 
49
        if (addr >= (unsigned long)_sinittext &&
50
            addr <= (unsigned long)_einittext)
51
                return 1;
52
        return 0;
53
}
54
 
55
int __kernel_text_address(unsigned long addr)
56
{
57
        if (core_kernel_text(addr))
58
                return 1;
59
        return __module_text_address(addr) != NULL;
60
}
61
 
62
int kernel_text_address(unsigned long addr)
63
{
64
        if (core_kernel_text(addr))
65
                return 1;
66
        return module_text_address(addr) != NULL;
67
}

powered by: WebSVN 2.1.0

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