• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

BUGSD07-Feb-20252.4 KiB12468

ChangeLog-2021D30-Jul-2023241.9 KiB6,8504,884

INSTALLD07-Feb-202519.9 KiB765447

READMED03-Oct-20139.3 KiB353222

RUND24-Sep-201127.7 KiB950644

acinclude.m4D12-Aug-20249.5 KiB229210

altivec.igenD07-Feb-202566.8 KiB2,3602,086

altivec_expression.hD07-Feb-20251.5 KiB4922

altivec_registers.hD07-Feb-20252 KiB6223

basics.hD07-Feb-20252.1 KiB9836

bits.cD07-Feb-20252.5 KiB13497

bits.hD07-Feb-20257.5 KiB288146

cap.cD03-Oct-20133.1 KiB134100

cap.hD03-Oct-20131.3 KiB6027

corefile-n.hD03-Oct-20132.7 KiB9767

corefile.cD07-Feb-20259.4 KiB416331

corefile.hD03-Oct-20136 KiB22769

cpu.cD07-Feb-20257.9 KiB401275

cpu.hD07-Feb-20255.4 KiB256144

dc-complexD03-Oct-20132.1 KiB5857

dc-simpleD03-Oct-2013935 2524

dc-stupidD03-Oct-20132.1 KiB5857

dc-test.01D03-Oct-20131 KiB2423

dc-test.02D03-Oct-20131 KiB2423

debug.cD07-Feb-20255 KiB156117

debug.hD07-Feb-20254.6 KiB193141

device.cD07-Feb-202548.4 KiB1,9851,638

device.hD07-Feb-202517.1 KiB797456

device_table.cD07-Feb-20257.2 KiB305244

device_table.hD07-Feb-20258.2 KiB317196

double.cD07-Feb-20251.1 KiB4315

dp-bit.cD07-Feb-202527 KiB1,2991,004

dumpf.cD12-Aug-20241.1 KiB4116

dumpf.hD12-Aug-2024938 263

e500.igenD07-Feb-2025108 KiB3,3473,014

e500_expression.hD07-Feb-20255.4 KiB172114

e500_registers.hD07-Feb-20253.1 KiB8544

emul_bugapi.cD07-Feb-202518.6 KiB574445

emul_bugapi.hD03-Oct-2013867 274

emul_chirp.cD07-Feb-202556 KiB2,0291,611

emul_chirp.hD03-Oct-20132.8 KiB754

emul_generic.cD07-Feb-20258.5 KiB338257

emul_generic.hD07-Feb-20254 KiB179121

emul_netbsd.cD07-Feb-202546.2 KiB1,8331,613

emul_netbsd.hD03-Oct-2013867 274

emul_unix.cD07-Feb-202571.4 KiB2,8562,429

emul_unix.hD03-Oct-2013892 285

events.cD07-Feb-202510.9 KiB409295

events.hD07-Feb-20251.8 KiB7935

filter-ppc.cD12-Aug-20241.1 KiB4220

filter-ppc.hD12-Aug-2024939 306

gdb-sim.cD07-Feb-202566.8 KiB1,2991,254

gen-icache.cD07-Feb-202518.9 KiB678574

gen-icache.hD03-Oct-20131.8 KiB6826

gen-idecode.cD07-Feb-202545.8 KiB1,5511,293

gen-idecode.hD03-Oct-20131.2 KiB4012

gen-itable.cD07-Feb-20253.4 KiB11880

gen-itable.hD03-Oct-2013891 286

gen-model.cD07-Feb-202512.1 KiB389320

gen-model.hD03-Oct-2013891 306

gen-semantics.cD07-Feb-20256.8 KiB252197

gen-semantics.hD03-Oct-20132.5 KiB8110

gen-support.cD07-Feb-20253.7 KiB138104

gen-support.hD03-Oct-2013894 296

hw_com.cD07-Feb-202514.1 KiB548311

hw_core.cD03-Oct-20133.4 KiB14385

hw_cpu.cD03-Oct-20134.3 KiB16774

hw_cpu.hD03-Oct-20131,021 3411

hw_disk.cD07-Feb-202515.6 KiB557342

hw_eeprom.cD07-Feb-202521.6 KiB833590

hw_glue.cD07-Feb-202510.7 KiB371202

hw_htab.cD07-Feb-202520.4 KiB692422

hw_ide.cD07-Feb-202524.3 KiB869631

hw_init.cD07-Feb-202519.8 KiB721411

hw_iobus.cD03-Oct-20132.5 KiB10051

hw_memory.cD07-Feb-202515.6 KiB543398

hw_nvram.cD07-Feb-20256.5 KiB247162

hw_opic.cD07-Feb-202553 KiB1,8231,423

hw_pal.cD07-Feb-20259.1 KiB355228

hw_phb.cD07-Feb-202529 KiB1,066724

hw_phb.hD03-Oct-20131.1 KiB4015

hw_register.cD07-Feb-20253.5 KiB13253

hw_sem.cD07-Feb-20256.8 KiB292164

hw_shm.cD07-Feb-20255.7 KiB236121

hw_trace.cD07-Feb-20252.6 KiB10344

hw_vm.cD03-Oct-20137.2 KiB275176

idecode_branch.hD03-Oct-20131.8 KiB6227

idecode_expression.hD07-Feb-202510.3 KiB419300

idecode_fields.hD07-Feb-20252.8 KiB10640

igen.cD07-Feb-202515.5 KiB576506

igen.hD03-Oct-20135.1 KiB19975

inline.cD07-Feb-20252 KiB10057

inline.hD07-Feb-202514.3 KiB499370

interrupts.cD07-Feb-202515.2 KiB541430

interrupts.hD03-Oct-20135 KiB17077

ld-cache.cD07-Feb-20253.1 KiB12589

ld-cache.hD07-Feb-20252.5 KiB9126

ld-decode.cD07-Feb-20254.4 KiB153115

ld-decode.hD07-Feb-20254.1 KiB14337

ld-insn.cD07-Feb-202526.9 KiB999790

ld-insn.hD07-Feb-20255.3 KiB287174

lf-ppc.cD12-Aug-20241.7 KiB6745

lf-ppc.hD12-Aug-20241,002 347

local.mkD12-Aug-20248 KiB289230

main.cD07-Feb-20256.6 KiB323249

mon.cD07-Feb-202511.4 KiB424344

mon.hD03-Oct-20132.2 KiB10864

options.cD07-Feb-20257 KiB228177

options.hD03-Oct-2013937 307

os_emul.cD03-Oct-20133.7 KiB146101

os_emul.hD03-Oct-20131.7 KiB6021

pk.hD12-Aug-2024118 31

pk_disklabel.cD07-Feb-202510.9 KiB397287

powerpc.igenD30-Jul-2023171.6 KiB5,0234,585

ppc-spr-tableD03-Oct-20131.7 KiB9391

psim.cD07-Feb-202532.1 KiB1,219967

psim.hD07-Feb-20253.9 KiB18696

psim.texinfoD07-Feb-202541.2 KiB1,107835

registers.cD07-Feb-20254.9 KiB188156

registers.hD07-Feb-20258 KiB348208

sim-main.hD07-Feb-202546 32

sim_callbacks.hD07-Feb-20253 KiB12537

sim_calls.cD07-Feb-20259.1 KiB415304

spreg-gen.pyD12-Aug-20248.5 KiB306221

spreg.cD12-Aug-202427 KiB1,1761,146

spreg.hD12-Aug-20242.5 KiB10984

std-config.hD07-Feb-202517.1 KiB605174

table.cD07-Feb-20257.8 KiB348262

table.hD03-Oct-20132 KiB7741

tree.cD07-Feb-202531.3 KiB1,2931,039

tree.hD07-Feb-20253.2 KiB14361

vm.cD07-Feb-202531.4 KiB1,199900

vm.hD03-Oct-20133.3 KiB15589

vm_n.hD07-Feb-20254.2 KiB134104

words.hD07-Feb-20252.3 KiB8623

README

1
2
3                    PSIM 1.0.1 - Model of the PowerPC Environments
4
5
6    Copyright (C) 1994-1996, Andrew Cagney <cagney@highland.com.au>.
7
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 3 of the License, or
11    (at your option) any later version.
12
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.
17
18    You should have received a copy of the GNU General Public License
19    along with this program; if not, see <http://www.gnu.org/licenses/>.
20
21
22    ----------------------------------------------------------------------
23
24
25PSIM is a program written in extended ANSI-C that implements an
26instruction level simulation of the PowerPC environment.  It is freely
27available in source code form under the terms of the GNU General
28Public License (version 3 or later).
29
30The PowerPC Architecture is described as having three levels of
31compliance:
32
33          UEA - User Environment Architecture
34          VEA - Virtual Environment Architecture
35          OEA - Operating Environment Architecture
36
37PSIM both implements all three levels of the PowerPC and includes (for
38each level) a corresponding simulated run-time environment.
39
40In addition, PSIM, to the execution unit level, models the performance
41of most of the current PowerPC implementations (contributed by Michael
42Meissner).  This detailed performance monitoring (unlike many other
43simulators) resulting in only a relatively marginal reduction in the
44simulators performance.
45
46
47A description of how to build PSIM is contained in the file:
48
49                    ftp://ftp.ci.com.au/pub/psim/INSTALL
50          or        ftp://cambridge.cygnus.com/pub/psim/INSTALL
51
52while an overview of how to use PSIM is in:
53
54          ftp://ftp.ci.com.au/pub/psim/RUN
55or        ftp://cambridge.cygnus.com/pub/psim/RUN
56
57This file is found in:
58
59          ftp://ftp.ci.com.au/pub/psim/README
60or        ftp://cambridge.cygnus.com/pub/psim/README
61
62
63Thanks goes firstly to:
64
65          Corinthian Engineering Pty Ltd
66          Cygnus Support
67          Highland Logic Pty Ltd
68
69who provided the resources needed for making this software available
70on the Internet.
71
72More importantly I'd like to thank the following individuals who each
73contributed in their own unique way:
74
75          Allen Briggs, Bett Koch, David Edelsohn, Gordon Irlam,
76          Michael Meissner, Bob Mercier, Richard Perini, Dale Rahn,
77          Richard Stallman, Mitchele Walker
78
79
80                                        Andrew Cagney
81                                        Feb, 1995
82
83
84    ----------------------------------------------------------------------
85
86
87    What features does PSIM include?
88
89          Monitoring and modeling
90
91                    PSIM includes (thanks to Michael Meissner)
92                    a detailed model of most of the PowerPC
93                    implementations to the functional unit level.
94
95
96          SMP
97
98                    The PowerPC ISA defines SMP synchronizing instructions.
99                    This simulator implements a limited, but functional,
100                    subset of the PowerPC synchronization instructions
101                    behaviour.  Programs that restrict their synchronization
102                    primitives to those that work with this functional
103                    sub-set (eg P() and V()) are able to run on the SMP
104                    version of PSIM.
105
106                    People intending to use this system should study
107                    the code implementing the lwarx instruction.
108
109          ENDIAN SUPPORT
110
111                    PSIM implements the PowerPC's big and little (xor
112                    endian) modes and correctly simulates code that
113                    switches between these two modes.
114
115                    In addition, psim can model a true little-endian
116                    machine.
117
118          ISA (Instruction Set Architecture) models
119
120                    PSIM includes a model of the UEA, VEA and OEA.  This
121                    includes the time base registers (VEA) and HTAB
122                    and BATS (OEA).
123
124                    In addition, a preliminary model of the 64 bit
125                    PowerPC architecture is implemented.
126
127          IO Hardware
128
129                    PSIM's internals are based around the concept
130                    of a Device Tree.  This tree intentionally
131                    resembles that of the Device Tree found in
132                    OpenBoot firmware.  PSIM is flexible enough
133                    to allow the user to fully configure this device
134                    tree (and consequently the hardware model) at
135                    run time.
136
137          Run-time environments:
138
139                    PSIM's UEA model includes emulation for BSD
140                    based UNIX system calls.
141
142                    PSIM's OEA model includes emulation of either:
143
144                              o         OpenBoot client interface
145
146                              o         MOTO's BUG interface.
147
148
149          Floating point
150
151                    Preliminary support for floating point is included.
152
153
154    Who would be interested in PSIM?
155
156          o         the curious
157
158                    Using psim, gdb, gcc and binutils the curious
159                    user can construct an environment that allows
160                    them to play with PowerPC Environment without
161                    the need for real hardware.
162
163
164          o         the analyst
165
166                    PSIM includes many (contributed) monitoring
167                    features which (unlike many other simulators)
168                    do not come with a great penalty in performance.
169
170                    Thus the performance analyst is able to use
171                    this simulator to analyse the performance of
172                    the system under test.
173
174                    If PSIM doesn't monitor a components of interest,
175                    the source code is freely available, and hence
176                    there is no hinderance to changing things
177                    to meet a specific analysts needs.
178
179
180          o         the serious SW developer
181
182                    PSIM models all three levels of the PowerPC
183                    Architecture: UEA, VEA and OEA.  Further,
184                    the internal design is such that PSIM can
185                    be extended to support additional requirements.
186
187
188    What performance analysis measurements can PSIM perform?
189
190          Below is the output from a recent analysis run
191          (contributed by Michael Meissner):
192
193          For the following program:
194
195          long
196          simple_rand ()
197          {
198            static unsigned long seed = 47114711;
199            unsigned long this = seed * 1103515245 + 12345;
200            seed = this;
201          /* cut-cut-cut - see the file RUN.psim */
202          }
203
204          Here is the current output generated with the -I switch on a P90
205          (the compiler used is the development version of GCC with a new
206          scheduler replacing the old one):
207
208          CPU #1 executed     41,994 AND instructions.
209          CPU #1 executed    519,785 AND Immediate instructions.
210          .
211          .
212          .
213          CPU #1 executed          1 System Call instruction.
214          CPU #1 executed    207,746 XOR instructions.
215
216          CPU #1 executed 23,740,856 cycles.
217          CPU #1 executed 10,242,780 stalls waiting for data.
218          CPU #1 executed          1 stall waiting for a function unit.
219          .
220          .
221          .
222          CPU #1 executed  3,136,229 branch functional unit instructions.
223          CPU #1 executed 16,949,396 instructions that were accounted for in timing info.
224          CPU #1 executed    871,920 data reads.
225          CPU #1 executed    971,926 data writes.
226          CPU #1 executed        221 icache misses.
227          CPU #1 executed 16,949,396 instructions in total.
228
229          Simulator speed was 250,731 instructions/second
230
231
232    What motivated PSIM?
233
234          As an idea, psim was first discussed seriously during mid
235          1994.  At that time its main objectives were:
236
237
238                    o         good performance
239
240                              Many simulators loose out by only providing
241                              a binary interface to the internals.  This
242                              interface eventually becomes a bottle neck
243                              in the simulators performance.
244
245                              It was intended that PSIM would avoid this
246                              problem by giving the user access to the
247                              full source code.
248
249                              Further, by exploiting the power of modern
250                              compilers it was hoped that PSIM would achieve
251                              good performance with out having to compromise
252                              its internal design.
253
254
255                    o         practical portability
256
257                              Rather than try to be portable to every
258                              C compiler on every platform, it was decided
259                              that PSIM would restrict its self to supporting
260                              ANSI compilers that included the extension
261                              of a long long type.
262
263                              GCC is one such compiler, consequently PSIM
264                              should be portable to any machine running GCC.
265
266
267                    o         flexibility in its design
268
269                              PSIM should allow the user to select the
270                              features required and customise the build
271                              accordingly.  By having the source code,
272                              the compiler is able to eliminate any un
273                              used features of the simulator.
274
275                              After all, let the compiler do the work.
276
277
278                    o         SMP
279
280                              A model that allowed the simulation of
281                              SMP platforms with out the large overhead
282                              often encountered with such models.
283
284
285          PSIM achieves each of these objectives.
286
287
288    Is PSIM PowerPC Platform (PPCP) (nee CHRP) Compliant?
289
290          No.
291
292          Among other things it does not have an Apple ROM socket.
293
294
295    Could PSIM be extended so that it models a CHRP machine?
296
297          Yes.
298
299          PSIM has been designed with the CHRP spec in mind. To model
300          a CHRP desktop the following would need to be added:
301
302                    o         An apple ROM socket :-)
303
304                    o         Model of each of the desktop IO devices
305
306                    o         An OpenPIC device.
307
308                    o         RTAS (Run Time Abstraction Services).
309
310                    o         A fully populated device tree.
311
312
313    Is the source code available?
314
315          Yes.
316
317          The source code to PSIM is available under the terms of
318          the GNU Public Licence.  This allows you to distribute
319          the source code for free but with certain conditions.
320
321          See the file:
322
323                    ftp://archie.au/gnu/COPYING
324
325          For details of the terms and conditions.
326
327
328    Where do I send bugs or report problems?
329
330          There is a mailing list (subscribe through majordomo@ci.com.au) at:
331
332          powerpc-psim@ci.com.au
333
334          If I get the ftp archive updated I post a note to that mailing list.
335          In addition your welcome to send bugs or problems either to me or to
336          that e-mail list.
337
338          This list currently averages zero articles a day.
339
340
341     Does PSIM have any limitations or problems?
342
343          PSIM can't run rs6000/AIX binaries - At present PSIM can only
344          simulate static executables.  Since an AIX executable is
345          never static, PSIM is unable to simulate its execution.
346
347          PSIM is still under development - consequently there are going
348          to be bugs.
349
350          See the file BUGS (included in the distribution) for any
351          other outstanding issues.
352
353