diff options
author | coadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu> | 2016-03-19 02:47:05 -0300 |
---|---|---|
committer | coadde [Márcio Alexandre Silva Delgado] <coadde@parabola.nu> | 2016-03-19 02:47:05 -0300 |
commit | f326fa638b4f279087b25fa9dc8563fd0dfc4104 (patch) | |
tree | 6921d70e06cc0d9893812ccc7a046f76e6b855b9 /pcr/reicast-multilib-git/fix-dyna-constprop.patch | |
parent | d67412b3ffe38c911bc6a716dd444a71171cbf9d (diff) | |
download | abslibre-f326fa638b4f279087b25fa9dc8563fd0dfc4104.tar.gz abslibre-f326fa638b4f279087b25fa9dc8563fd0dfc4104.tar.bz2 abslibre-f326fa638b4f279087b25fa9dc8563fd0dfc4104.zip |
remove reicast-multilib-git
Diffstat (limited to 'pcr/reicast-multilib-git/fix-dyna-constprop.patch')
-rw-r--r-- | pcr/reicast-multilib-git/fix-dyna-constprop.patch | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/pcr/reicast-multilib-git/fix-dyna-constprop.patch b/pcr/reicast-multilib-git/fix-dyna-constprop.patch deleted file mode 100644 index c7c89b5e2..000000000 --- a/pcr/reicast-multilib-git/fix-dyna-constprop.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff -Nur a/core/hw/sh4/dyna/shil.cpp b/core/hw/sh4/dyna/shil.cpp ---- a/core/hw/sh4/dyna/shil.cpp 2015-10-06 21:43:53.031336322 -0300 -+++ b/core/hw/sh4/dyna/shil.cpp 2015-10-06 21:45:06.558863627 -0300 -@@ -521,20 +521,39 @@ - rv[op->rd._reg]=op->rs1._imm; - } - -- //NOT WORKING -- //WE NEED PROPER PAGELOCKS -- if (op->op==shop_readm && op->rs1.is_imm() && op->rd.is_r32i() && op->rd._reg<16 && op->flags==0x4 && op->rs3.is_null()) -- { -- u32 baddr=blk->addr&0x0FFFFFFF; -+ if (0) { -+ //a more minimalistic but still broken approach for this. -+ //this is clearly a hack -+ if (op->op == shop_readm && op->rs1.is_imm() && IsOnRam(op->rs1.imm_value())) -+ { -+ u32 round = op->rs1.imm_value() & ~PAGE_MASK; -+ bool optmize_away = round == (blk->addr & ~PAGE_MASK) && (blk->addr & 0x007FFFFF) > 0x200000; -+ -+ if (optmize_away && op->flags == 4) { -+ u32 data = _vmem_ReadMem32(op->rs1.imm_value()); -+ op->op = shop_mov32; -+ op->rs1.type = FMT_IMM; -+ op->rs1._imm = data; -+ } -+ } -+ } - -- if (/*baddr==0xC158400 &&*/ blk->addr/PAGE_SIZE == op->rs1._imm/PAGE_SIZE) -+ if (0) { -+ //NOT WORKING -+ //WE NEED PROPER PAGELOCKS -+ if (op->op == shop_readm && op->rs1.is_imm() && op->rd.is_r32i() && op->rd._reg<16 && op->flags == 0x4 && op->rs3.is_null()) - { -- isi[op->rd._reg]=true; -- rv[op->rd._reg]= ReadMem32(op->rs1._imm); -- printf("IMM MOVE: %08X -> %08X\n",op->rs1._imm,rv[op->rd._reg]); -+ u32 baddr = blk->addr & 0x0FFFFFFF; - -- op->op=shop_mov32; -- op->rs1._imm=rv[op->rd._reg]; -+ if (/*baddr==0xC158400 &&*/ blk->addr / PAGE_SIZE == op->rs1._imm / PAGE_SIZE) -+ { -+ isi[op->rd._reg] = true; -+ rv[op->rd._reg] = ReadMem32(op->rs1._imm); -+ printf("IMM MOVE: %08X -> %08X\n", op->rs1._imm, rv[op->rd._reg]); -+ -+ op->op = shop_mov32; -+ op->rs1._imm = rv[op->rd._reg]; -+ } - } - } - } -@@ -925,7 +944,7 @@ - */ - if (settings.dynarec.unstable_opt) - sq_pref(blk); -- //constprop(blk); // crashes on ip -+ constprop(blk); // maybe it works w/o the readm parts? - #if HOST_CPU==CPU_X86 - // rdgrp(blk); - // wtgrp(blk); |