/[gxemul]/upstream/0.3.5/experiments/new_test_loadstore_a.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /upstream/0.3.5/experiments/new_test_loadstore_a.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 13 - (show annotations)
Mon Oct 8 16:18:43 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 1030 byte(s)
0.3.5
1 /*
2 * $Id: new_test_loadstore_a.c,v 1.3 2005/07/22 20:01:25 debug Exp $
3 *
4 * Experimenting with dynamic-but-not-binary-translation load/store.
5 * See new_test_loadstore_b.c for the main() function.
6 */
7
8 #include "new_test_loadstore.h"
9
10 static void inline general_store(struct cpu *cpu, struct ic *ic)
11 {
12 general_store(cpu, ic);
13 }
14
15 void x(struct cpu *cpu, struct ic *ic)
16 {
17 unsigned int addr = *ic->arg1; /* + ic->arg2; */
18 unsigned char **table1, *page;
19
20 #ifdef AAA
21 page = cpu->table0[addr >> 12];
22 #else
23 table1 = cpu->table0[addr >> 22];
24 page = table1[((addr >> 12) & 1023)*2 + 1];
25 #endif
26
27 if (page != 0)
28 page[addr & 4095] = *(ic->arg3);
29 else
30 general_store(cpu, ic);
31 }
32
33 void y(struct cpu *cpu, struct ic *ic)
34 {
35 unsigned int addr = *ic->arg1; /* + ic->arg2; */
36 unsigned char **table1, *page;
37
38 #ifdef AAA
39 page = cpu->table0[addr >> 12];
40 #else
41 table1 = cpu->table0[addr >> 22];
42 page = table1[((addr >> 12) & 1023)*2 + 0];
43 #endif
44 if (page != 0)
45 *(ic->arg3) = page[addr & 4095];
46 else
47 general_store(cpu, ic);
48 }
49

  ViewVC Help
Powered by ViewVC 1.1.26