/[pearpc]/src/cpu/cpu_generic/ppc_cpu.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Contents of /src/cpu/cpu_generic/ppc_cpu.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 2922 byte(s)
import upstream CVS
1 /*
2 * PearPC
3 * ppc_cpu.h
4 *
5 * Copyright (C) 2003, 2004 Sebastian Biallas (sb@biallas.net)
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21 #ifndef __PPC_CPU_H__
22 #define __PPC_CPU_H__
23
24 #include <stddef.h>
25 #include "system/types.h"
26 #include "cpu/common.h"
27
28 #define PPC_MHz(v) ((v)*1000*1000)
29
30 #define TB_TO_PTB_FACTOR 10
31
32 #define PPC_MODEL "ppc_model"
33 #define PPC_CPU_MODEL "ppc_cpu"
34 #define PPC_CLOCK_FREQUENCY PPC_MHz(10)
35 #define PPC_BUS_FREQUENCY PPC_MHz(10)
36 #define PPC_TIMEBASE_FREQUENCY (PPC_CLOCK_FREQUENCY / TB_TO_PTB_FACTOR)
37
38 struct PPC_CPU_State {
39 // * uisa
40 uint32 gpr[32];
41 uint64 fpr[32];
42 uint32 cr;
43 uint32 fpscr;
44 uint32 xer; // spr 1
45 uint32 xer_ca; // carry from xer
46 uint32 lr; // spr 8
47 uint32 ctr; // spr 9
48 // * oea
49 uint32 msr;
50 uint32 pvr; // spr 287
51
52 // * memory managment
53 uint32 ibatu[4]; // spr 528, 530, 532, 534
54 uint32 ibatl[4]; // spr 529, 531, 533, 535
55 uint32 ibat_bl17[4]; // for internal use
56
57 uint32 dbatu[4]; // spr 536, 538, 540, 542
58 uint32 dbatl[4]; // spr 537, 539, 541, 543
59 uint32 dbat_bl17[4]; // for internal use
60
61 uint32 sdr1; // spr 25 (page table base address)
62
63 uint32 sr[16];
64
65 // * exception handling
66 uint32 dar; // spr 19
67 uint32 dsisr; // spr 18
68 uint32 sprg[4]; // spr 272-275
69 uint32 srr[2]; // spr 26-27
70
71 // * misc
72 uint32 dec; // spr 22
73 uint32 ear; // spr 282 .101
74 uint32 pir; // spr 1032
75 uint64 tb; // .75 spr 284(l)/285(u)
76
77 uint32 hid[16];
78 // * internal
79
80 uint32 pc;
81 uint32 npc;
82 uint32 current_opc;
83 bool exception_pending;
84 bool dec_exception;
85 bool ext_exception;
86 bool stop_exception;
87 bool singlestep_ignore;
88
89 uint32 pagetable_base;
90 int pagetable_hashmask;
91 uint32 reserve;
92 bool have_reservation;
93
94 // for generic cpu core
95 uint32 effective_code_page;
96 byte *physical_code_page;
97 uint64 pdec; // more precise version of dec
98 uint64 ptb; // more precise version of tb
99
100 // for altivec
101 uint32 vscr;
102 uint32 vrsave; // spr 256
103 Vector_t vr[36]; // <--- this MUST be 16-byte alligned
104 uint32 vtemp;
105 };
106
107 extern PPC_CPU_State gCPU;
108
109 void ppc_cpu_atomic_raise_ext_exception();
110 void ppc_cpu_atomic_cancel_ext_exception();
111
112 extern uint32 gBreakpoint;
113 extern uint32 gBreakpoint2;
114
115 void ppc_set_singlestep_v(bool v, const char *file, int line, const char *format, ...);
116 void ppc_set_singlestep_nonverbose(bool v);
117
118 #endif
119

  ViewVC Help
Powered by ViewVC 1.1.26