aboutsummaryrefslogtreecommitdiff
path: root/ARM.h
blob: 024ecb95097bafccd81f0bc5417bb9bea0554750 (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
// ARM shit

#ifndef ARM_H
#define ARM_H

#include "types.h"
#include "NDS.h"

class ARM
{
public:
    ARM(u32 num);
    ~ARM(); // destroy shit

    void JumpTo(u32 addr);
    s32 Execute(s32 cycles);

    u32 Read32(u32 addr)
    {
        if (Num) return NDS::ARM7Read32(addr);
        else     return NDS::ARM9Read32(addr);
    }


    u32 Num;

    u32 R[16]; // heh
    u32 CPSR;
    u32 R_FIQ[8]; // holding SPSR too
    u32 R_SVC[3];
    u32 R_ABT[3];
    u32 R_IRQ[3];
    u32 R_UND[3];
    u32 CurInstr;
    u32 NextInstr;

    u32 ExceptionBase;
};

#endif // ARM_H