| 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 | UINT32 cycles_aim; // subtract sh2_icount to get global counter\r |
| 52 | } SH2;\r |
| 53 | \r |
| 54 | SH2 *sh2; // active sh2\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 |