mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-03 10:43:28 +00:00
target-or32: Add exception support
Add OpenRISC exception support. Signed-off-by: Jia Liu <proljc@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
b6a71ef7e0
commit
1d7d403469
@ -1,3 +1,3 @@
|
||||
obj-$(CONFIG_SOFTMMU) += machine.o
|
||||
obj-y += cpu.o interrupt.o mmu.o translate.o
|
||||
obj-y += interrupt_helper.o mmu_helper.o
|
||||
obj-y += cpu.o exception.o interrupt.o mmu.o translate.o
|
||||
obj-y += exception_helper.o interrupt_helper.o mmu_helper.o
|
||||
|
27
target-openrisc/exception.c
Normal file
27
target-openrisc/exception.c
Normal file
@ -0,0 +1,27 @@
|
||||
/*
|
||||
* OpenRISC exception.
|
||||
*
|
||||
* Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "exception.h"
|
||||
|
||||
void QEMU_NORETURN raise_exception(OpenRISCCPU *cpu, uint32_t excp)
|
||||
{
|
||||
cpu->env.exception_index = excp;
|
||||
cpu_loop_exit(&cpu->env);
|
||||
}
|
28
target-openrisc/exception.h
Normal file
28
target-openrisc/exception.h
Normal file
@ -0,0 +1,28 @@
|
||||
/*
|
||||
* OpenRISC exception header.
|
||||
*
|
||||
* Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef QEMU_OPENRISC_EXCP_H
|
||||
#define QEMU_OPENRISC_EXCP_H
|
||||
|
||||
#include "cpu.h"
|
||||
#include "qemu-common.h"
|
||||
|
||||
void QEMU_NORETURN raise_exception(OpenRISCCPU *cpu, uint32_t excp);
|
||||
|
||||
#endif /* QEMU_OPENRISC_EXCP_H */
|
29
target-openrisc/exception_helper.c
Normal file
29
target-openrisc/exception_helper.c
Normal file
@ -0,0 +1,29 @@
|
||||
/*
|
||||
* OpenRISC exception helper routines
|
||||
*
|
||||
* Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
#include "helper.h"
|
||||
#include "exception.h"
|
||||
|
||||
void HELPER(exception)(CPUOpenRISCState *env, uint32_t excp)
|
||||
{
|
||||
OpenRISCCPU *cpu = OPENRISC_CPU(ENV_GET_CPU(env));
|
||||
|
||||
raise_exception(cpu, excp);
|
||||
}
|
@ -19,6 +19,9 @@
|
||||
|
||||
#include "def-helper.h"
|
||||
|
||||
/* exception */
|
||||
DEF_HELPER_FLAGS_2(exception, 0, void, env, i32)
|
||||
|
||||
/* interrupt */
|
||||
DEF_HELPER_FLAGS_1(rfe, 0, void, env)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user