equal
deleted
inserted
replaced
|
1 // |
|
2 // Copyright (c) 2008 Symbian Ltd. All rights reserved. |
|
3 // |
|
4 // dummy peripheral used for logging peripheral accesses |
|
5 |
|
6 #include "hw.h" |
|
7 |
|
8 typedef struct { |
|
9 uint32_t base; |
|
10 char tag[32]; |
|
11 } syborg_dummy_state; |
|
12 |
|
13 static const unsigned int syborg_dummy_id = 0xbabe0007; |
|
14 |
|
15 static uint32_t syborg_dummy_read(void *opaque, target_phys_addr_t offset) |
|
16 { |
|
17 syborg_dummy_state *s = (syborg_dummy_state *)opaque; |
|
18 offset -= s->base; |
|
19 |
|
20 printf("[%s] dummy_read b:%x o:%x\n", s->tag, s->base, offset); |
|
21 |
|
22 return 0; |
|
23 } |
|
24 |
|
25 static void syborg_dummy_write(void *opaque, target_phys_addr_t offset, uint32_t value) |
|
26 { |
|
27 syborg_dummy_state *s = (syborg_dummy_state *)opaque; |
|
28 offset -= s->base; |
|
29 |
|
30 printf("[%s] dummy_write b:%x o:%x v:%x\n", s->tag, s->base, offset, value); |
|
31 } |
|
32 |
|
33 static CPUReadMemoryFunc *syborg_dummy_readfn[] = { |
|
34 syborg_dummy_read, |
|
35 syborg_dummy_read, |
|
36 syborg_dummy_read |
|
37 }; |
|
38 |
|
39 static CPUWriteMemoryFunc *syborg_dummy_writefn[] = { |
|
40 syborg_dummy_write, |
|
41 syborg_dummy_write, |
|
42 syborg_dummy_write |
|
43 }; |
|
44 |
|
45 void syborg_dummy_init(uint32_t base, char *tag) |
|
46 { |
|
47 syborg_dummy_state *s; |
|
48 int iomemtype; |
|
49 |
|
50 s = (syborg_dummy_state *)qemu_mallocz(sizeof(syborg_dummy_state)); |
|
51 iomemtype = cpu_register_io_memory(0, syborg_dummy_readfn, syborg_dummy_writefn, s); |
|
52 cpu_register_physical_memory(base, 0x00001000, iomemtype); |
|
53 s->base = base; |
|
54 memcpy(s->tag, tag, 32); |
|
55 s->tag[31] = 0; |
|
56 } |
|
57 |