PPC: Clean up DECR implementation
commite81a982aa5398269a2cc344091ffa4930bdd242f
authorAlexander Graf <agraf@suse.de>
Sat, 5 Apr 2014 23:32:06 +0000 (6 01:32 +0200)
committerAlexander Graf <agraf@suse.de>
Tue, 8 Apr 2014 09:20:04 +0000 (8 11:20 +0200)
tree5d09772f11575fffff75613be0dea2b7899c362f
parent6cd7db3d92d44344d75feb432e3ece8587e1afd4
PPC: Clean up DECR implementation

There are 3 different variants of the decrementor for BookE and BookS.

The BookE variant sets TSR[DIS] to 1 when the DEC value becomes 1 or 0. TSR[DIS]
is then the indicator whether the decrementor interrupt line is asserted or not.

The old BookS variant treats DEC as an edge interrupt that gets triggered when
the DEC value's top bit turns 1 from 0.

The new BookS variant maintains the assertion bit inside DEC itself. Whenever
the DEC value becomes negative (top bit set) the DEC interrupt line is asserted.

So far we implemented mostly the old BookS variant. Let's do them all properly.

This fixes booting pseries ppc64 guest images in TCG mode for me.

Signed-off-by: Alexander Graf <agraf@suse.de>
hw/ppc/ppc.c
include/hw/ppc/ppc.h
target-ppc/cpu.h
target-ppc/excp_helper.c