eaa10a6e |
1 | /*****************************************************************************\r |
2 | *\r |
3 | * sh2.h\r |
4 | * Portable Hitachi SH-2 (SH7600 family) emulator interface\r |
5 | *\r |
6 | * Copyright Juergen Buchmueller <pullmoll@t-online.de>,\r |
7 | * all rights reserved.\r |
8 | *\r |
9 | * - This source code is released as freeware for non-commercial purposes.\r |
10 | * - You are free to use and redistribute this code in modified or\r |
11 | * unmodified form, provided you list me in the credits.\r |
12 | * - If you modify this source code, you must add a notice to each modified\r |
13 | * source file that it has been changed. If you're a nice person, you\r |
14 | * will clearly mark each change too. :)\r |
15 | * - If you wish to use this for commercial purposes, please contact me at\r |
16 | * pullmoll@t-online.de\r |
17 | * - The author of this copywritten work reserves the right to change the\r |
18 | * terms of its usage and license at any time, including retroactively\r |
19 | * - This entire notice must remain in the source code.\r |
20 | *\r |
21 | * This work is based on <tiraniddo@hotmail.com> C/C++ implementation of\r |
22 | * the SH-2 CPU core and was heavily changed to the MAME CPU requirements.\r |
23 | * Thanks also go to Chuck Mason <chukjr@sundail.net> and Olivier Galibert\r |
24 | * <galibert@pobox.com> for letting me peek into their SEMU code :-)\r |
25 | *\r |
26 | *****************************************************************************/\r |
27 | \r |
28 | #pragma once\r |
29 | \r |
30 | #ifndef __SH2_H__\r |
31 | #define __SH2_H__\r |
32 | \r |
33 | typedef struct\r |
34 | {\r |
35 | UINT32 r[16];\r |
36 | UINT32 ppc;\r |
37 | UINT32 pc;\r |
38 | UINT32 pr;\r |
39 | UINT32 sr;\r |
40 | UINT32 gbr, vbr;\r |
41 | UINT32 mach, macl;\r |
4ea707e1 |
42 | \r |
eaa10a6e |
43 | UINT32 ea;\r |
44 | UINT32 delay;\r |
45 | UINT32 test_irq;\r |
46 | \r |
4ea707e1 |
47 | int pending_irq;\r |
b78efee2 |
48 | void (*irq_callback)(int id, int level);\r |
49 | int is_slave;\r |
4ea707e1 |
50 | \r |
eaa10a6e |
51 | // XXX: unused, will we ever use?\r |
eaa10a6e |
52 | int internal_irq_level;\r |
eaa10a6e |
53 | } SH2;\r |
54 | \r |
266c6afa |
55 | extern int sh2_icount;\r |
56 | \r |
b78efee2 |
57 | void sh2_init(SH2 *sh2, int is_slave);\r |
eaa10a6e |
58 | void sh2_reset(SH2 *sh2);\r |
59 | int sh2_execute(SH2 *sh2_, int cycles);\r |
4ea707e1 |
60 | void sh2_irl_irq(SH2 *sh2, int level);\r |
eaa10a6e |
61 | \r |
62 | #endif /* __SH2_H__ */\r |