32x: hook slave sh2, BIOS passes (not much else):
[picodrive.git] / cpu / sh2mame / sh2.h
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
42 \r
43         UINT32  ea;\r
44         UINT32  delay;\r
45         UINT32  test_irq;\r
46 \r
47         int     pending_irq;\r
48         void    (*irq_callback)(int id, int level);\r
49         int     is_slave;\r
50 \r
51         // XXX: unused, will we ever use?\r
52         int   internal_irq_level;\r
53 } SH2;\r
54 \r
55 extern int sh2_icount;\r
56 \r
57 void sh2_init(SH2 *sh2, int is_slave);\r
58 void sh2_reset(SH2 *sh2);\r
59 int sh2_execute(SH2 *sh2_, int cycles);\r
60 void sh2_irl_irq(SH2 *sh2, int level);\r
61 \r
62 #endif /* __SH2_H__ */\r