32x: hook slave sh2, BIOS passes (not much else):
[picodrive.git] / cpu / sh2mame / sh2.h
CommitLineData
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
33typedef 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 55extern int sh2_icount;\r
56\r
b78efee2 57void sh2_init(SH2 *sh2, int is_slave);\r
eaa10a6e 58void sh2_reset(SH2 *sh2);\r
59int sh2_execute(SH2 *sh2_, int cycles);\r
4ea707e1 60void sh2_irl_irq(SH2 *sh2, int level);\r
eaa10a6e 61\r
62#endif /* __SH2_H__ */\r