summaryrefslogtreecommitdiffstats
path: root/sw/z80/kernel/include/sysexe.h
blob: 9c13c0928ca8e5fdb304de0811c4b7195d2af280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef SYS_EXE
#define SYS_EXE

#define SYS_EXEC_ADDR // TODO find an address in Kernel space

struct sys_progman {

    // program 0 enabled

    uint8_t prog_0_enabled:1;

    // program 1 enabled

    /*
    *   Obs: A program is enabled when its space is allocated 
    *        and its virtual program counter is stored in 
    *        the hardware or in the silent_pc.
    *        An enabled program is not necessarly running, it 
    *        could be paused too.
    */

    uint8_t prog_1_enabled:1;

    // running's program id

    uint8_t prog_running:1;
};

struct sys_exec {

    /*
    *   Virtual addresses are activated
    */

    uint8_t virtual_addr:1;

    struct sys_progman progman;

    /*
    *   The silent_pc is the place designed to store the 
    *   program counter of the program that's not running
    */

    uint8_t silent_pc:12;
};

/*
*   Function to access informations
*/

uint8_t vaddr_enabled();

struct sys_progman * sys_prog_data(struct sys_progman *data);

#endif