• Stafford Horne's avatar
    target/openrisc: Support non-busy idle state using PMR SPR · f4d1414a
    Stafford Horne authored
    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: 's avatarRichard Henderson <rth@twiddle.net>
    Signed-off-by: 's avatarStafford Horne <shorne@gmail.com>
    f4d1414a
sys_helper.c 9.83 KB