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

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [include/] [asm-armnommu/] [proc-armv/] [processor.h] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1633 jcastillo
/*
2
 * linux/include/asm-arm/proc-armv/processor.h
3
 *
4
 * Copyright (c) 1996 Russell King.
5
 *
6
 * Changelog:
7
 *  20-09-1996  RMK     Created
8
 *  26-09-1996  RMK     Added 'EXTRA_THREAD_STRUCT*'
9
 *  28-09-1996  RMK     Moved start_thread into the processor dependencies
10
 */
11
#ifndef __ASM_PROC_PROCESSOR_H
12
#define __ASM_PROC_PROCESSOR_H
13
 
14
#ifdef __KERNEL__
15
 
16
#define KERNEL_STACK_SIZE       PAGE_SIZE
17
#define alloc_kernel_stack()    __get_free_page(GFP_KERNEL)
18
#define free_kernel_stack(page) free_page((page))
19
 
20
/*
21
 * on arm2,3 wp does not work
22
 */
23
#define wp_works_ok 0
24
#define wp_works_ok__is_a_macro /* for versions in ksyms.c */
25
 
26
struct context_save_struct {
27
        unsigned long cpsr;
28
        unsigned long r4;
29
        unsigned long r5;
30
        unsigned long r6;
31
        unsigned long r7;
32
        unsigned long r8;
33
        unsigned long r9;
34
        unsigned long r10;
35
        unsigned long fp;
36
        unsigned long pc;
37
};
38
 
39
#ifndef NO_MM
40
#define EXTRA_THREAD_STRUCT                             \
41
        struct context_save_struct *save;               \
42
        unsigned long memmap;
43
 
44
#define EXTRA_THREAD_STRUCT_INIT                        \
45
        0,                                               \
46
        ((unsigned long) swapper_pg_dir) - PAGE_OFFSET
47
 
48
#else
49
#define EXTRA_THREAD_STRUCT     \
50
                struct context_save_struct *save;
51
 
52
#define EXTRA_THREAD_STRUCT_INIT                        \
53
 
54
 
55
 
56
 
57
#endif
58
DECLARE_THREAD_STRUCT;
59
 
60
/*
61
 * Return saved PC of a blocked thread.
62
 */
63
extern __inline__ unsigned long thread_saved_pc (struct thread_struct *t)
64
{
65
        if (t->save)
66
                return t->save->pc;
67
        else
68
                return 0;
69
}
70
 
71
extern __inline__ unsigned long get_css_fp (struct thread_struct *t)
72
{
73
        if (t->save)
74
                return t->save->fp;
75
        else
76
                return 0;
77
}
78
 
79
asmlinkage void ret_from_sys_call(void) __asm__("_ret_from_sys_call");
80
 
81
extern __inline__ void copy_thread_css (struct context_save_struct *save)
82
{
83
        save->cpsr = SVC_MODE;
84
        save->r4 =
85
        save->r5 =
86
        save->r6 =
87
        save->r7 =
88
        save->r8 =
89
        save->r9 =
90
        save->r10 =
91
        save->fp = 0;
92
        save->pc = (unsigned long) ret_from_sys_call;
93
}
94
 
95
#define start_thread(regs,pc,sp)                                        \
96
({                                                                      \
97
        unsigned long *stack = (unsigned long *)sp;                     \
98
        set_fs(USER_DS);                                                \
99
        memzero(regs->uregs, sizeof(regs->uregs));                      \
100
        if (current->personality == PER_LINUX_32BIT)                    \
101
                regs->ARM_cpsr = USR_MODE;                              \
102
        else                                                            \
103
                regs->ARM_cpsr = USR26_MODE;                            \
104
        regs->ARM_pc = pc;              /* pc */                        \
105
        regs->ARM_sp = sp;              /* sp */                        \
106
        regs->ARM_r2 = stack[2];        /* r2 (envp) */                 \
107
        regs->ARM_r1 = stack[1];        /* r1 (argv) */                 \
108
        regs->ARM_r0 = stack[0]; /* r0 (argc) */                 \
109
})
110
 
111
#endif
112
 
113
#endif

powered by: WebSVN 2.1.0

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