source: soft/giet_vm/giet_kernel/ctx_handler.h @ 258

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

This is a major release, including a deep restructuration of code.
The main evolutions are

  • use of the Tsar preloader to load the GIET boot-loader from disk
  • introduction of a FAT32 file system library,
  • use of this fat32 library by the boot-loader to load the map.bin data structure, and the various .elf files
  • reorganisation of drivers (one file per peripheral).
  • introduction of drivers for new peripherals: vci_chbuf_dma and vci_multi_ahci.
  • introduction of a new physical memory allocator in the boot code.

This release has been tested on the tsar_generic_iob architecture,
for the two following mappings: 4c_1p_iob_four.xml and 4c_1p_iob_sort.xml

  • Property svn:executable set to *
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_HBA_ID       44  // global HBA channel
47#define CTX_CMA_ID       45  // global CMA channel
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 _idle_task();
58
59extern static_scheduler_t _scheduler[];
60
61#endif
Note: See TracBrowser for help on using the repository browser.