On 02/12/2016 03:39 AM, Richard Henderson wrote:
> On 02/12/2016 03:01 AM, Bastian Koppelmann wrote:
>> +void tricore_cpu_do_interrupt(CPUState *cs)
>> +{
>> +    TriCoreCPU *cpu = TRICORE_CPU(cs);
>> +    CPUTriCoreState *env = &cpu->env;
>> +
>> +    /* The stack pointer in A[10] is set to the Interrupt Stack
>> Pointer (ISP)
>> +       when the processor was not previously using the interrupt stack
>> +       (in case of PSW.IS = 0). The stack pointer bit is set for
>> using the
>> +       interrupt stack: PSW.IS = 1. */
>> +    if ((env->PSW & MASK_PSW_IS) == 0) {
>> +        env->gpr_a[10] = env->ISP;
>> +    }
> 
> You appear to have forgotten to save pre-interrupt state here.

What do you mean by "pre-interrupt state"? The register context is saved
by generate_trap() calls.

Cheers,
Bastian




Reply via email to