version 1.1.1.1, 2008/06/03 10:38:45 |
version 1.1.1.1.2.1, 2008/08/13 17:12:29 |
|
|
* Processor context |
* Processor context |
*/ |
*/ |
struct context { |
struct context { |
struct kern_regs kregs; /* Kernel mode registers */ |
struct kern_regs kregs; /* kernel mode registers */ |
struct cpu_regs *uregs; /* User mode registers */ |
struct cpu_regs *uregs; /* user mode registers */ |
|
struct cpu_regs *saved_regs; /* savecd user mode registers */ |
}; |
}; |
|
|
typedef struct context *context_t; /* context id */ |
typedef struct context *context_t; /* context id */ |
|
|
/* Types for context_set */ |
/* types for context_set */ |
#define CTX_UENTRY 0 /* Set user mode entry addres */ |
#define CTX_KSTACK 0 /* set kernel mode entry address */ |
#define CTX_USTACK 1 /* Set user mode stack address */ |
#define CTX_KENTRY 1 /* set kernel mode entry address */ |
#define CTX_KENTRY 2 /* Set kernel mode entry address */ |
#define CTX_KARG 2 /* set kernel mode argument */ |
#define CTX_KARG 3 /* Set kernel mode argument */ |
#define CTX_USTACK 3 /* set user mode stack address */ |
|
#define CTX_UENTRY 4 /* set user mode entry addres */ |
|
#define CTX_UARG 5 /* set user mode argument */ |
|
|
extern void context_init(context_t, u_long); |
extern void context_set(context_t, int, vaddr_t); |
extern void context_set(context_t, int type, u_long); |
extern void context_switch(context_t, context_t); |
extern void context_switch(context_t, context_t); |
extern void context_save(context_t); |
extern void context_save(context_t, int); |
extern void context_restore(context_t); |
extern void context_restore(context_t, void *); |
|
|
|
/* |
/* |
* Memory Management Unit |
* Memory Management Unit |
|
|
/* |
/* |
* User Memory access |
* User Memory access |
*/ |
*/ |
extern int umem_copyin(void *, void *, size_t); |
extern int umem_copyin(const void *, void *, size_t); |
extern int umem_copyout(void *, void *, size_t); |
extern int umem_copyout(const void *, void *, size_t); |
extern int umem_strnlen(const char *, size_t, size_t *); |
extern int umem_strnlen(const char *, size_t, size_t *); |
|
|
/* #define breakpoint() __asm__ __volatile__("bkpt"::) */ |
extern void syscall_ret(void); |
#define breakpoint() do {} while (0); |
#define breakpoint() do {} while (0); |
|
|
#endif /* !_ARCH_H */ |
#endif /* !_ARCH_H */ |