The OpenRISC architecture has the Power Management Register (PMR) special purpose register to manage cpu power states. The interesting modes are: * Doze Mode (DME) - Stop cpu except timer & pic - wake on interrupt * Sleep Mode (SME) - Stop cpu and all units - wake on interrupt * Suspend Model (SUME) - Stop cpu and all units - wake on reset The linux kernel will set DME when idle. This patch implements the PMR SPR and halts the qemu cpu when there is a change to DME or SME. This means that openrisc qemu in no longer peggs a host cpu at 100%. In order for this to work we need to kick the CPU when timers are expired. Update the cpu timer to kick the cpu upon each timer event. Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Stafford Horne <shorne@gmail.com> |
||
|---|---|---|
| .. | ||
| Makefile.objs | ||
| cpu.c | ||
| cpu.h | ||
| exception.c | ||
| exception.h | ||
| exception_helper.c | ||
| fpu_helper.c | ||
| gdbstub.c | ||
| helper.h | ||
| interrupt.c | ||
| interrupt_helper.c | ||
| machine.c | ||
| mmu.c | ||
| mmu_helper.c | ||
| sys_helper.c | ||
| translate.c | ||