4 * Generic CPU definitions, primarily for providing information to the GUI.
6 * Copyright (c) 2005 Nathan Keynes.
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
20 #define lxdream_cpu_H 1
30 * Disassembly function pointer typedef.
32 * @param pc Address to disassemble
33 * @param buffer String buffer to write disassembly into
34 * @param buflen Maximum length of buffer
35 * @return next address to disassemble
37 typedef uint32_t (*disasm_func_t)(uint32_t pc, char *buffer, int buflen, char *opcode );
44 * Structure that defines a single register in a CPU for display purposes.
46 typedef struct reg_desc_struct {
53 * CPU definition structure - basic information and support functions.
55 typedef struct cpu_desc_struct {
56 char *name; /* CPU Name */
57 disasm_func_t disasm_func; /* Disassembly function */
58 gboolean (*step_func)(); /* Single step function */
59 int (*is_valid_page_func)(uint32_t); /* Test for valid memory page */
60 void (*set_breakpoint)(uint32_t, breakpoint_type_t);
61 gboolean (*clear_breakpoint)(uint32_t, breakpoint_type_t);
62 int (*get_breakpoint)(uint32_t);
63 size_t instr_size; /* Size of instruction */
64 char *regs; /* Pointer to start of registers */
65 size_t regs_size; /* Size of register structure in bytes */
66 const struct reg_desc_struct *regs_info; /* Description of all registers */
67 uint32_t *pc; /* Pointer to PC register */
74 #endif /* !lxdream_cpu_H */
.