riscv: sifive_test: Add reset functionality
This adds a reset opcode for sifive_test device to trigger a system reset for testing purpose. Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Palmer Dabbelt <palmer@sifive.com> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
		@@ -22,6 +22,7 @@
 | 
			
		||||
#include "hw/hw.h"
 | 
			
		||||
#include "hw/sysbus.h"
 | 
			
		||||
#include "qemu/module.h"
 | 
			
		||||
#include "sysemu/runstate.h"
 | 
			
		||||
#include "target/riscv/cpu.h"
 | 
			
		||||
#include "hw/hw.h"
 | 
			
		||||
#include "hw/riscv/sifive_test.h"
 | 
			
		||||
@@ -42,6 +43,9 @@ static void sifive_test_write(void *opaque, hwaddr addr,
 | 
			
		||||
            exit(code);
 | 
			
		||||
        case FINISHER_PASS:
 | 
			
		||||
            exit(0);
 | 
			
		||||
        case FINISHER_RESET:
 | 
			
		||||
            qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
 | 
			
		||||
            return;
 | 
			
		||||
        default:
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -36,7 +36,8 @@ typedef struct SiFiveTestState {
 | 
			
		||||
 | 
			
		||||
enum {
 | 
			
		||||
    FINISHER_FAIL = 0x3333,
 | 
			
		||||
    FINISHER_PASS = 0x5555
 | 
			
		||||
    FINISHER_PASS = 0x5555,
 | 
			
		||||
    FINISHER_RESET = 0x7777
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
DeviceState *sifive_test_create(hwaddr addr);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user