mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/rth/tags/pull-hppa-20190212' into staging
Convert to decodetree. Fix signed overflow conditions. Fix dcor. Add CPU MIE to PCI address space. # gpg: Signature made Tue 12 Feb 2019 21:26:07 GMT # gpg: using RSA key 64DF38E8AF7E215F # gpg: Good signature from "Richard Henderson <richard.henderson@linaro.org>" [full] # Primary key fingerprint: 7A48 1E78 868B 4DB6 A85A 05C0 64DF 38E8 AF7E 215F * remotes/rth/tags/pull-hppa-20190212: (24 commits) hw/hppa: forward requests to CPU HPA target/hppa: fix dcor instruction target/hppa: Fix addition '</<=' conditions target/hppa: Rearrange log conditions target/hppa: move GETPC to HELPER() functions target/hppa: Merge translate_one into hppa_tr_translate_insn target/hppa: Convert fp operate insns target/hppa: Convert fp fused multiply-add insns target/hppa: Convert halt/reset insns target/hppa: Convert fp indexed memory insns target/hppa: Convert offset memory insns target/hppa: Convert arithmetic immediate insns target/hppa: Convert direct and indirect branches target/hppa: Convert shift, extract, deposit insns target/hppa: Convert conditional branches target/hppa: Convert fp multiply-add target/hppa: Convert indexed memory insns target/hppa: Convert arithmetic/logical insns target/hppa: Convert memory management insns target/hppa: Unify specializations of OR ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
+7
-1
@@ -105,6 +105,7 @@ typedef struct DinoState {
|
||||
MemoryRegion bm;
|
||||
MemoryRegion bm_ram_alias;
|
||||
MemoryRegion bm_pci_alias;
|
||||
MemoryRegion bm_cpu_alias;
|
||||
|
||||
MemoryRegion cpu0_eir_mem;
|
||||
} DinoState;
|
||||
@@ -473,12 +474,17 @@ PCIBus *dino_init(MemoryRegion *addr_space,
|
||||
memory_region_init_alias(&s->bm_pci_alias, OBJECT(s),
|
||||
"bm-pci", &s->pci_mem,
|
||||
0xf0000000 + DINO_MEM_CHUNK_SIZE,
|
||||
31 * DINO_MEM_CHUNK_SIZE);
|
||||
30 * DINO_MEM_CHUNK_SIZE);
|
||||
memory_region_init_alias(&s->bm_cpu_alias, OBJECT(s),
|
||||
"bm-cpu", addr_space, 0xfff00000,
|
||||
0xfffff);
|
||||
memory_region_add_subregion(&s->bm, 0,
|
||||
&s->bm_ram_alias);
|
||||
memory_region_add_subregion(&s->bm,
|
||||
0xf0000000 + DINO_MEM_CHUNK_SIZE,
|
||||
&s->bm_pci_alias);
|
||||
memory_region_add_subregion(&s->bm, 0xfff00000,
|
||||
&s->bm_cpu_alias);
|
||||
address_space_init(&s->bm_as, &s->bm, "pci-bm");
|
||||
pci_setup_iommu(b, dino_pcihost_set_iommu, s);
|
||||
|
||||
|
||||
@@ -1,3 +1,11 @@
|
||||
obj-y += translate.o helper.o cpu.o op_helper.o gdbstub.o mem_helper.o
|
||||
obj-y += int_helper.o
|
||||
obj-$(CONFIG_SOFTMMU) += machine.o
|
||||
|
||||
DECODETREE = $(SRC_PATH)/scripts/decodetree.py
|
||||
|
||||
target/hppa/decode.inc.c: $(SRC_PATH)/target/hppa/insns.decode $(DECODETREE)
|
||||
$(call quiet-command,\
|
||||
$(PYTHON) $(DECODETREE) -o $@ $<, "GEN", $(TARGET_DIR)$@)
|
||||
|
||||
target/hppa/translate.o: target/hppa/decode.inc.c
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+6
-10
@@ -81,10 +81,8 @@ static void atomic_store_3(CPUHPPAState *env, target_ulong addr, uint32_t val,
|
||||
}
|
||||
|
||||
static void do_stby_b(CPUHPPAState *env, target_ulong addr, target_ureg val,
|
||||
bool parallel)
|
||||
bool parallel, uintptr_t ra)
|
||||
{
|
||||
uintptr_t ra = GETPC();
|
||||
|
||||
switch (addr & 3) {
|
||||
case 3:
|
||||
cpu_stb_data_ra(env, addr, val, ra);
|
||||
@@ -109,20 +107,18 @@ static void do_stby_b(CPUHPPAState *env, target_ulong addr, target_ureg val,
|
||||
|
||||
void HELPER(stby_b)(CPUHPPAState *env, target_ulong addr, target_ureg val)
|
||||
{
|
||||
do_stby_b(env, addr, val, false);
|
||||
do_stby_b(env, addr, val, false, GETPC());
|
||||
}
|
||||
|
||||
void HELPER(stby_b_parallel)(CPUHPPAState *env, target_ulong addr,
|
||||
target_ureg val)
|
||||
{
|
||||
do_stby_b(env, addr, val, true);
|
||||
do_stby_b(env, addr, val, true, GETPC());
|
||||
}
|
||||
|
||||
static void do_stby_e(CPUHPPAState *env, target_ulong addr, target_ureg val,
|
||||
bool parallel)
|
||||
bool parallel, uintptr_t ra)
|
||||
{
|
||||
uintptr_t ra = GETPC();
|
||||
|
||||
switch (addr & 3) {
|
||||
case 3:
|
||||
/* The 3 byte store must appear atomic. */
|
||||
@@ -151,13 +147,13 @@ static void do_stby_e(CPUHPPAState *env, target_ulong addr, target_ureg val,
|
||||
|
||||
void HELPER(stby_e)(CPUHPPAState *env, target_ulong addr, target_ureg val)
|
||||
{
|
||||
do_stby_e(env, addr, val, false);
|
||||
do_stby_e(env, addr, val, false, GETPC());
|
||||
}
|
||||
|
||||
void HELPER(stby_e_parallel)(CPUHPPAState *env, target_ulong addr,
|
||||
target_ureg val)
|
||||
{
|
||||
do_stby_e(env, addr, val, true);
|
||||
do_stby_e(env, addr, val, true, GETPC());
|
||||
}
|
||||
|
||||
target_ureg HELPER(probe)(CPUHPPAState *env, target_ulong addr,
|
||||
|
||||
+1365
-1986
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user