source: soft/giet_vm/boot/boot_handler.h @ 185

Last change on this file since 185 was 180, checked in by karaoui, 12 years ago

removing the parametre variable PTE2_MAX from giet_config.
Now we compute dynamically the second table size from the length of the vobj.

File size: 4.0 KB
RevLine 
[160]1///////////////////////////////////////////////////////////////////////////////////
2// File     : boot_handler.h
3// Date     : 01/04/2012
4// Author   : alain greiner
5// Copyright (c) UPMC-LIP6
6///////////////////////////////////////////////////////////////////////////////////
7
[169]8#include <giet_config.h>
9#include <mapping_info.h>
10
[160]11#ifndef     _BOOT_HANDLER_H_
12#define     _BOOT_HANDLER_H_
13
14/////////////////////////////////////////////////////////////////////////////////////
15// Page Table sizes definition
16/////////////////////////////////////////////////////////////////////////////////////
17
18#define     PT1_SIZE    8192
19#define     PT2_SIZE    4096
20
21/////////////////////////////////////////////////////////////////////////////////////
22// PTE flags masks definition
23/////////////////////////////////////////////////////////////////////////////////////
24
25#define     PTE_V       0x80000000
26#define     PTE_T       0x40000000
27#define     PTE_L       0x20000000
28#define     PTE_R       0x10000000
29#define     PTE_C       0x08000000
30#define     PTE_W       0x04000000
31#define     PTE_X       0x02000000
32#define     PTE_U       0x01000000
33#define     PTE_G       0x00800000
34#define     PTE_D       0x00400000
35
36/////////////////////////////////////////////////////////////////////////////////////
37// MMU error codes definition
38/////////////////////////////////////////////////////////////////////////////////////
39
40#define MMU_ERR_PT1_UNMAPPED         0x001      // Page fault on Table1 (invalid PTE)
41#define MMU_ERR_PT2_UNMAPPED         0x002      // Page fault on Table 2 (invalid PTE)
42#define MMU_ERR_PRIVILEGE_VIOLATION  0x004      // Protected access in user mode
43#define MMU_ERR_WRITE_VIOLATION      0x008      // Write access to a non write page
44#define MMU_ERR_EXEC_VIOLATION       0x010      // Exec access to a non exec page
45#define MMU_ERR_UNDEFINED_XTN        0x020      // Undefined external access address
46#define MMU_ERR_PT1_ILLEGAL_ACCESS   0x040      // Bus Error in Table1 access
47#define MMU_ERR_PT2_ILLEGAL_ACCESS   0x080      // Bus Error in Table2 access
48#define MMU_ERR_CACHE_ILLEGAL_ACCESS 0x100      // Bus Error during the cache access
49
50/////////////////////////////////////////////////////////////////////////////////////
51// Page table structure definition
52/////////////////////////////////////////////////////////////////////////////////////
53typedef struct PageTable
54{
[167]55        unsigned int    pt1[PT1_SIZE];                    // PT1 (index is ix1)
[180]56        unsigned int    pt2[1][PT2_SIZE];   // PT2s (index is 2*ix2)
57    /*  The number `1` is onmy here to indicate to the compiler that this is a table
58     ** of two dimension and the actual value is computed dynamically(see boot_handler.c)*/ 
[160]59} page_table_t;
60
61/////////////////////////////////////////////////////////////////////////////////
62//      Definition of the scheduler structure
63/////////////////////////////////////////////////////////////////////////////////
64
65typedef struct scheduler_s
66{
67    unsigned int        context[GIET_NB_TASKS_MAX][64];   // task contexts
68    unsigned int        tasks;                                        // actual number of tasks
69    unsigned int        current;                                      // current task index
70} scheduler_t;
71
72///////////////////////////////////////////////////////////////////////////////////
73// For retrieving base addresses defined in seg.ld file.
74///////////////////////////////////////////////////////////////////////////////////
75
76typedef struct _ld_symbol_s _ld_symbol_t;
77
78extern _ld_symbol_t seg_icu_base;
79extern _ld_symbol_t seg_timer_base;
80extern _ld_symbol_t seg_tty_base;
81extern _ld_symbol_t seg_gcd_base;
82extern _ld_symbol_t seg_dma_base;
83extern _ld_symbol_t seg_fb_base;
84extern _ld_symbol_t seg_ioc_base;
85extern _ld_symbol_t seg_mapping_base;
86extern _ld_symbol_t seg_kernel_pt_base;
87
88///////////////////////////////////////////////////////////////////////////////////
89typedef void (*_isr_func_t)(void);
90
91#endif
92
93// Local Variables:
94// tab-width: 4
95// c-basic-offset: 4
96// c-file-offsets:((innamespace . 0)(inline-open . 0))
97// indent-tabs-mode: nil
98// End:
99
100// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
Note: See TracBrowser for help on using the repository browser.