Revision e9df014c target-ppc/helper.c
b/target-ppc/helper.c | ||
---|---|---|
1358 | 1358 |
env->exception_index = -1; |
1359 | 1359 |
} |
1360 | 1360 |
|
1361 |
int ppc_hw_interrupt (CPUState *env)
|
|
1361 |
void ppc_hw_interrupt (CPUState *env)
|
|
1362 | 1362 |
{ |
1363 | 1363 |
env->exception_index = -1; |
1364 |
|
|
1365 |
return 0; |
|
1366 | 1364 |
} |
1367 | 1365 |
#else /* defined (CONFIG_USER_ONLY) */ |
1368 | 1366 |
static void dump_syscall(CPUState *env) |
... | ... | |
1927 | 1925 |
env->exception_index = EXCP_NONE; |
1928 | 1926 |
} |
1929 | 1927 |
|
1930 |
int ppc_hw_interrupt (CPUState *env)
|
|
1928 |
void ppc_hw_interrupt (CPUPPCState *env)
|
|
1931 | 1929 |
{ |
1932 | 1930 |
int raised = 0; |
1933 | 1931 |
|
... | ... | |
1940 | 1938 |
/* Raise it */ |
1941 | 1939 |
if (env->pending_interrupts & (1 << PPC_INTERRUPT_RESET)) { |
1942 | 1940 |
/* External reset / critical input */ |
1941 |
/* XXX: critical input should be handled another way. |
|
1942 |
* This code is not correct ! |
|
1943 |
*/ |
|
1943 | 1944 |
env->exception_index = EXCP_RESET; |
1944 | 1945 |
env->pending_interrupts &= ~(1 << PPC_INTERRUPT_RESET); |
1945 | 1946 |
raised = 1; |
... | ... | |
1984 | 1985 |
/* External interrupt */ |
1985 | 1986 |
} else if (env->pending_interrupts & (1 << PPC_INTERRUPT_EXT)) { |
1986 | 1987 |
env->exception_index = EXCP_EXTERNAL; |
1988 |
/* Taking an external interrupt does not clear the external |
|
1989 |
* interrupt status |
|
1990 |
*/ |
|
1991 |
#if 0 |
|
1987 | 1992 |
env->pending_interrupts &= ~(1 << PPC_INTERRUPT_EXT); |
1993 |
#endif |
|
1988 | 1994 |
raised = 1; |
1989 | 1995 |
} |
1990 | 1996 |
#if 0 // TODO |
... | ... | |
1999 | 2005 |
env->error_code = 0; |
2000 | 2006 |
do_interrupt(env); |
2001 | 2007 |
} |
2002 |
|
|
2003 |
return raised; |
|
2004 | 2008 |
} |
2005 | 2009 |
#endif /* !CONFIG_USER_ONLY */ |
Also available in: Unified diff