Statistics
| Branch: | Revision:

root / target-ppc / exec.h @ 719f66a7

History | View | Annotate | Download (1.6 kB)

1 79aceca5 bellard
/*
2 3fc6c082 bellard
 *  PowerPC emulation definitions for qemu.
3 5fafdf24 ths
 *
4 76a66253 j_mayer
 *  Copyright (c) 2003-2007 Jocelyn Mayer
5 79aceca5 bellard
 *
6 79aceca5 bellard
 * This library is free software; you can redistribute it and/or
7 79aceca5 bellard
 * modify it under the terms of the GNU Lesser General Public
8 79aceca5 bellard
 * License as published by the Free Software Foundation; either
9 79aceca5 bellard
 * version 2 of the License, or (at your option) any later version.
10 79aceca5 bellard
 *
11 79aceca5 bellard
 * This library is distributed in the hope that it will be useful,
12 79aceca5 bellard
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 79aceca5 bellard
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 79aceca5 bellard
 * Lesser General Public License for more details.
15 79aceca5 bellard
 *
16 79aceca5 bellard
 * You should have received a copy of the GNU Lesser General Public
17 79aceca5 bellard
 * License along with this library; if not, write to the Free Software
18 fad6cb1a aurel32
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA  02110-1301 USA
19 79aceca5 bellard
 */
20 79aceca5 bellard
#if !defined (__PPC_H__)
21 79aceca5 bellard
#define __PPC_H__
22 79aceca5 bellard
23 fdabc366 bellard
#include "config.h"
24 fdabc366 bellard
25 79aceca5 bellard
#include "dyngen-exec.h"
26 79aceca5 bellard
27 76a66253 j_mayer
#include "cpu.h"
28 76a66253 j_mayer
#include "exec-all.h"
29 fdabc366 bellard
30 9326a95c aurel32
/* Precise emulation is needed to correctly emulate exception flags */
31 196e3422 aurel32
#define USE_PRECISE_EMULATION 1
32 1cdb9c3d aurel32
33 79aceca5 bellard
register struct CPUPPCState *env asm(AREG0);
34 79aceca5 bellard
35 9a64fbe4 bellard
#if !defined(CONFIG_USER_ONLY)
36 a9049a07 bellard
#include "softmmu_exec.h"
37 9a64fbe4 bellard
#endif /* !defined(CONFIG_USER_ONLY) */
38 79aceca5 bellard
39 b068d6a7 j_mayer
static always_inline void env_to_regs (void)
40 0d1a29f9 bellard
{
41 0d1a29f9 bellard
}
42 0d1a29f9 bellard
43 b068d6a7 j_mayer
static always_inline void regs_to_env (void)
44 0d1a29f9 bellard
{
45 0d1a29f9 bellard
}
46 0d1a29f9 bellard
47 6a4955a8 aliguori
static always_inline int cpu_has_work(CPUState *env)
48 6a4955a8 aliguori
{
49 6a4955a8 aliguori
    return (msr_ee && (env->interrupt_request & CPU_INTERRUPT_HARD));
50 6a4955a8 aliguori
}
51 6a4955a8 aliguori
52 6a4955a8 aliguori
53 b068d6a7 j_mayer
static always_inline int cpu_halted (CPUState *env)
54 36081602 j_mayer
{
55 bfed01fc ths
    if (!env->halted)
56 bfed01fc ths
        return 0;
57 6a4955a8 aliguori
    if (cpu_has_work(env)) {
58 bfed01fc ths
        env->halted = 0;
59 bfed01fc ths
        return 0;
60 bfed01fc ths
    }
61 bfed01fc ths
    return EXCP_HALTED;
62 bfed01fc ths
}
63 bfed01fc ths
64 79aceca5 bellard
#endif /* !defined (__PPC_H__) */