Xenomai
3.0-rc7
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
thread.h
1
/*
2
* Copyright (C) 2001-2013 Philippe Gerum <rpm@xenomai.org>.
3
* Copyright (C) 2004-2006 Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>.
4
*
5
* Xenomai is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
*
10
* Xenomai is distributed in the hope that it will be useful, but
11
* WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
* General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with Xenomai; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
18
* 02111-1307, USA.
19
*/
20
#ifndef _COBALT_X86_ASM_THREAD_H
21
#define _COBALT_X86_ASM_THREAD_H
22
23
#include <asm-generic/xenomai/thread.h>
24
#include <asm/xenomai/wrappers.h>
25
26
typedef
union
thread_xstate x86_fpustate;
27
#define x86_fpustate_ptr(t) ((t)->fpu.state)
28
29
struct
xnarchtcb {
30
x86_fpustate i387;
31
struct
xntcb core;
32
unsigned
long
sp;
33
unsigned
long
*spp;
34
unsigned
long
ip;
35
unsigned
long
*ipp;
36
x86_fpustate *fpup;
37
unsigned
int
root_kfpu: 1;
38
unsigned
int
root_used_math: 1;
39
struct
{
40
unsigned
long
ip;
41
unsigned
long
ax;
42
} mayday;
43
};
44
45
static
inline
int
xnarch_shadow_p(
struct
xnarchtcb *tcb,
struct
task_struct *task)
46
{
47
return
tcb->spp == &task->thread.sp;
48
}
49
50
#define xnarch_fpu_ptr(tcb) ((tcb)->fpup)
51
52
#define xnarch_fault_regs(d) ((d)->regs)
53
#define xnarch_fault_trap(d) ((d)->exception)
54
#define xnarch_fault_code(d) ((d)->regs->orig_ax)
55
#define xnarch_fault_pc(d) ((d)->regs->ip)
56
#define xnarch_fault_fpu_p(d) ((d)->exception == 7)
57
#define xnarch_fault_pf_p(d) ((d)->exception == 14)
58
#define xnarch_fault_bp_p(d) ((current->ptrace & PT_PTRACED) && \
59
((d)->exception == 1 || (d)->exception == 3))
60
#define xnarch_fault_notify(d) (!xnarch_fault_bp_p(d))
61
62
void
xnarch_save_fpu(
struct
xnthread *thread);
63
64
void
xnarch_switch_fpu(
struct
xnthread *from,
struct
xnthread *to);
65
66
int
xnarch_handle_fpu_fault(
struct
xnthread *from,
67
struct
xnthread *to,
struct
ipipe_trap_data *d);
68
69
void
xnarch_leave_root(
struct
xnthread *root);
70
71
void
xnarch_init_root_tcb(
struct
xnthread *thread);
72
73
void
xnarch_init_shadow_tcb(
struct
xnthread *thread);
74
75
void
xnarch_switch_to(
struct
xnthread *out,
struct
xnthread *in);
76
77
static
inline
void
xnarch_enter_root(
struct
xnthread *root) { }
78
79
int
xnarch_escalate(
void
);
80
81
#endif
/* !_COBALT_X86_ASM_THREAD_H */
kernel
cobalt
arch
x86
include
asm
xenomai
thread.h
Generated by
1.8.9.1