fix GP2X build
[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
1d29444d 35 unsigned int r[16];\r
36 unsigned int ppc;\r
37 unsigned int pc;\r
38 unsigned int pr;\r
39 unsigned int sr;\r
40 unsigned int gbr, vbr;\r
41 unsigned int mach, macl;\r
4ea707e1 42\r
1d29444d 43 unsigned int ea;\r
44 unsigned int delay;\r
45 unsigned int test_irq;\r
eaa10a6e 46\r
1d7a28a7 47 int pending_irl;\r
48 int pending_int_irq; // internal irq\r
49 int pending_int_vector;\r
b78efee2 50 void (*irq_callback)(int id, int level);\r
51 int is_slave;\r
4ea707e1 52\r
1d29444d 53 unsigned int cycles_aim; // subtract sh2_icount to get global counter\r
eaa10a6e 54} SH2;\r
55\r
2ea2cbfe 56SH2 *sh2; // active sh2\r
266c6afa 57extern int sh2_icount;\r
58\r
b78efee2 59void sh2_init(SH2 *sh2, int is_slave);\r
eaa10a6e 60void sh2_reset(SH2 *sh2);\r
61int sh2_execute(SH2 *sh2_, int cycles);\r
4ea707e1 62void sh2_irl_irq(SH2 *sh2, int level);\r
1d7a28a7 63void sh2_internal_irq(SH2 *sh2, int level, int vector);\r
eaa10a6e 64\r
65#endif /* __SH2_H__ */\r