Statistics
| Branch: | Revision:

root / target-unicore32 / exec.h @ e4ebcc1a

History | View | Annotate | Download (1 kB)

1
/*
2
 *  UniCore32 execution defines
3
 *
4
 * Copyright (C) 2010-2011 GUAN Xue-tao
5
 *
6
 * This program is free software; you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License version 2 as
8
 * published by the Free Software Foundation.
9
 */
10
#ifndef __UC32_EXEC_H__
11
#define __UC32_EXEC_H__
12

    
13
#include "config.h"
14
#include "dyngen-exec.h"
15

    
16
register struct CPUState_UniCore32 *env asm(AREG0);
17

    
18
#include "cpu.h"
19
#include "exec-all.h"
20

    
21
static inline void env_to_regs(void)
22
{
23
}
24

    
25
static inline void regs_to_env(void)
26
{
27
}
28

    
29
static inline int cpu_has_work(CPUState *env)
30
{
31
    return env->interrupt_request &
32
        (CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXITTB);
33
}
34

    
35
static inline int cpu_halted(CPUState *env)
36
{
37
    if (!env->halted) {
38
        return 0;
39
    }
40
    /* An interrupt wakes the CPU even if the I and R ASR bits are
41
       set.  We use EXITTB to silently wake CPU without causing an
42
       actual interrupt.  */
43
    if (cpu_has_work(env)) {
44
        env->halted = 0;
45
        return 0;
46
    }
47
    return EXCP_HALTED;
48
}
49

    
50
#endif /* __UC32_EXEC_H__ */