source: soft/giet_vm/sys/ctx_handler.h @ 255

Last change on this file since 255 was 238, checked in by alain, 11 years ago

Major evolution to support physical addresses larger than 32 bits.
The map.xml format has been modified: the vsegs associated to schedulers
are now explicitely defined and mapped in the page tables.

File size: 2.3 KB
Line 
1#ifndef _CTX_HANDLER_H
2#define _CTX_HANDLER_H
3
4#include <giet_config.h>
5
6/////////////////////////////////////////////////////////////////////////////////
7//    Definition of the scheduler structure
8/////////////////////////////////////////////////////////////////////////////////
9
10typedef struct static_scheduler_s
11{
12    unsigned int context[15][64];      // at most 15 task contexts
13    unsigned int tasks;                // actual number of tasks
14    unsigned int current;              // current task index
15    unsigned int interrupt_vector[32]; // interrupt vector
16} static_scheduler_t;
17
18
19/////////////////////////////////////////////////////////////////////////////////
20//  "idle" task index definition
21/////////////////////////////////////////////////////////////////////////////////
22
23#define IDLE_TASK_INDEX        14
24
25/////////////////////////////////////////////////////////////////////////////////
26//    Definition of the task context slots indexes
27/////////////////////////////////////////////////////////////////////////////////
28
29#define CTX_SP_ID        29
30#define CTX_RA_ID        31
31
32#define CTX_EPC_ID       32  // Exception Program Counter (CP0)
33#define CTX_CR_ID        33  // Cause Register (CP0)
34#define CTX_SR_ID        34  // Status Register (CP0)
35#define CTX_BVAR_ID      35      // Bad Virtual Address Register (CP0)
36
37#define CTX_PTAB_ID      36  // Page Table Virtual address
38#define CTX_LTID_ID      37  // Local  Task Index (in scheduler)
39#define CTX_VSID_ID      38  // Vspace Index     
40#define CTX_PTPR_ID      39  // Page Table Pointer Register (PADDR>>13)
41
42#define CTX_TTY_ID       40  // global TTY terminal 
43#define CTX_DMA_ID       41  // local DMA channel
44#define CTX_NIC_ID       42  // global NIC channel
45#define CTX_TIM_ID       43  // local TIMER channel
46#define CTX_IOC_ID       44  // global IOC channel
47#define CTX_CMA_ID       45  // global CMA channel index (in scheduler) / UNUSED
48#define CTX_GTID_ID      46  // Global Task Index
49#define CTX_RUN_ID       47  // Boolean: task runable
50
51//////////////////////////////////////////////////////////////////////////////////
52//     Prototype of the context switch function
53//////////////////////////////////////////////////////////////////////////////////
54
55extern void _ctx_switch();
56extern void _ctx_eret();
57extern void _ctx_idle();
58
59extern static_scheduler_t _scheduler[];
60
61#endif
Note: See TracBrowser for help on using the repository browser.