aboutsummaryrefslogtreecommitdiff
path: root/qtmips_machine/machineconfig.h
blob: c55228a6950418bab20ea055955a515e0980044f (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
#ifndef MACHINECONFIG_H
#define MACHINECONFIG_H

#include <QString>

namespace machine {

class MachineConfig {
public:
    MachineConfig();
    MachineConfig(const MachineConfig *cc);

    enum CacheType {
        CCT_NONE,
        CCT_ASSOCIATIVE,
        // TODO
    };

    // Configure if CPU is pipelined
    // In default disabled.
    void set_pipelined(bool);
    // Configure if we want to do jump prediction
    // In default enabled. When disabled it also automatically disables pipelining.
    void set_delay_slot(bool);
    // Configure cache type
    // In default CCT_NONE is used.
    void set_cache(enum CacheType);
    // Set path to source elf file. This has to be set before core is initialized.
    void set_elf(QString path);

    bool pipelined() const;
    bool delay_slot() const;
    enum CacheType cache() const;
    QString elf() const;

private:
    bool pipeline, delayslot;
    enum CacheType cache_type;
    QString elf_path;
};

}

#endif // MACHINECONFIG_H