3 * Copyright (C) 2009,2010 notaz
5 * This work is licensed under the terms of MAME license.
6 * See COPYING file in the top-level directory.
10 #include <pico/pico_int.h>
14 u8 tcache[DRC_TCACHE_SIZE];
16 u8 __attribute__((aligned(4096))) tcache[DRC_TCACHE_SIZE];
20 void drc_cmn_init(void)
22 int ret = plat_mem_set_exec(tcache, sizeof(tcache));
23 elprintf(EL_STATUS, "drc_cmn_init: %p, %zd bytes: %d",
24 tcache, sizeof(tcache), ret);
27 if (PicoOpt & POPT_EN_DRC)
32 int *test_out = (void *)tcache;
33 int (*testfunc)(void) = (void *)tcache;
35 elprintf(EL_STATUS, "testing if we can run recompiled code..");
36 *test_out++ = 0xe3a000dd; // mov r0, 0xdd
37 *test_out++ = 0xe12fff1e; // bx lr
38 cache_flush_d_inval_i(tcache, test_out);
40 // we'll usually crash on broken platforms or bad ports,
41 // but do a value check too just in case
43 elprintf(EL_STATUS, "test %s.", ret == 0xdd ? "passed" : "failed");
50 void drc_cmn_cleanup(void)
54 // vim:shiftwidth=2:expandtab