Parent Directory | Revision Log
++ trunk/HISTORY (local) $Id: HISTORY,v 1.1298 2006/07/22 11:27:46 debug Exp $ 20060626 Continuing on SPARC emulation (beginning on the 'save' instruction, register windows, etc). 20060629 Planning statistics gathering (new -s command line option), and renaming speed_tricks to allow_instruction_combinations. 20060630 Some minor manual page updates. Various cleanups. Implementing the -s command line option. 20060701 FINALLY found the bug which prevented Linux and Ultrix from running without the ugly hack in the R2000/R3000 cache isol code; it was the phystranslation hint array which was buggy. Removing the phystranslation hint code completely, for now. 20060702 Minor dyntrans cleanups; invalidation of physpages now only invalidate those parts of a page that have actually been translated. (32 parts per page.) Some MIPS non-R3000 speed fixes. Experimenting with MIPS instruction combination for some addiu+bne+sw loops, and sw+sw+sw. Adding support (again) for larger-than-4KB pages in MIPS tlbw*. Continuing on SPARC emulation: adding load/store instructions. 20060704 Fixing a virtual vs physical page shift bug in the new tlbw* implementation. Problem noticed by Jakub Jermar. (Many thanks.) Moving rfe and eret to cpu_mips_instr.c, since that is the only place that uses them nowadays. 20060705 Removing the BSD license from the "testmachine" include files, placing them in the public domain instead; this enables the testmachine stuff to be used from projects which are incompatible with the BSD license for some reason. 20060707 Adding instruction combinations for the R2000/R3000 L1 I-cache invalidation code used by NetBSD/pmax 3.0, lui+addiu, various branches followed by addiu or nop, and jr ra followed by addiu. The time it takes to perform a full NetBSD/pmax R3000 install on the laptop has dropped from 573 seconds to 539. :-) 20060708 Adding a framebuffer controller device (dev_fbctrl), which so far can be used to change the fb resolution during runtime, but in the future will also be useful for accelerated block fill/ copy, and possibly also simplified character output. Adding an instruction combination for NetBSD/pmax' strlen. 20060709 Minor fixes: reading raw files in src/file.c wasn't memblock aligned, removing buggy multi_sw MIPS instruction combination, etc. 20060711 Adding a machine_qemu.c, which contains a "qemu_mips" machine. (It mimics QEMU's MIPS machine mode, so that a test kernel made for QEMU_MIPS also can run in GXemul... at least to some extent.) Adding a short section about how to run this mode to doc/guestoses.html. 20060714 Misc. minor code cleanups. 20060715 Applying a patch which adds getchar() to promemul/yamon.c (from Oleksandr Tymoshenko). Adding yamon.h from NetBSD, and rewriting yamon.c to use it (instead of ugly hardcoded numbers) + some cleanup. 20060716 Found and fixed the bug which broke single-stepping of 64-bit programs between 0.4.0 and 0.4.0.1 (caused by too quick refactoring and no testing). Hopefully this fix will not break too many other things. 20060718 Continuing on the 8253 PIT; it now works with Linux/QEMU_MIPS. Re-adding the sw+sw+sw instr comb (the problem was that I had ignored endian issues); however, it doesn't seem to give any big performance gain. 20060720 Adding a dummy Transputer mode (T414, T800 etc) skeleton (only the 'j' and 'ldc' instructions are implemented so far). :-} 20060721 Adding gtreg.h from NetBSD, updating dev_gt.c to use it, plus misc. other updates to get Linux 2.6 for evbmips/malta working (thanks to Alec Voropay for the details). FINALLY found and fixed the bug which made tlbw* for non-R3000 buggy; it was a reference count problem in the dyntrans core. 20060722 Testing stuff; things seem stable enough for a new release. ============== RELEASE 0.4.1 ==============
1 | Gavare's eXperimental Emulator -- GXemul 0.4.1 |
2 | ================================================== |
3 | |
4 | Copyright (C) 2003-2006 Anders Gavare. |
5 | |
6 | |
7 | Overview -- What is GXemul? |
8 | ----------------------------- |
9 | |
10 | GXemul is an experimental instruction-level machine emulator. Several |
11 | emulation modes are available. In some modes, processors and surrounding |
12 | hardware components are emulated well enough to let unmodified operating |
13 | systems (e.g. NetBSD) run as if they were running on a real machine. |
14 | |
15 | Processors (ARM, MIPS, PowerPC) are emulated using a kind of dynamic |
16 | translation system. Performance is somewhere between traditional |
17 | interpretation and recompilation into native code. However, the dynamic |
18 | translation system used in GXemul does not (currently) generate native |
19 | code, and thus does not require platform-specific back-ends. In plain |
20 | English, this means that the dyntrans system works on any host platform. |
21 | |
22 | Possible uses of the emulator include: |
23 | |
24 | o) educational purposes, e.g. to learn how to write code for MIPS |
25 | |
26 | o) hobby operating system development; the emulator can be used as a |
27 | complement to testing your code on real hardware |
28 | |
29 | o) running guest operating systems in a "sandboxed" environment |
30 | |
31 | o) compiling your source code inside a guest operating system which you |
32 | otherwise would not have access to (e.g. various exotic ports of |
33 | NetBSD), to make sure that your source code is portable to those |
34 | platforms |
35 | |
36 | o) simulating (ethernet) networks of computers running various |
37 | operating systems, to study their interaction with each other |
38 | |
39 | o) debugging code in general |
40 | |
41 | Use your imagination :-) |
42 | |
43 | |
44 | GXemul's limitations |
45 | -------------------- |
46 | |
47 | o) GXemul is not (in general) a cycle-accurate simulator, because it does |
48 | not simulate things smaller than an instruction. Pipe-line stalls, |
49 | instruction latency effects etc. are more or less completely ignored. |
50 | |
51 | o) Hardware devices have been implemented in an ad-hoc and as-needed |
52 | manner, usually only enough to fool certain guest operating systems |
53 | (e.g. NetBSD) that the hardware devices exist and function well |
54 | enough for those guest operating systems to use them. |
55 | |
56 | A consequence of this is that a machine mode may be implemented well |
57 | enough to run NetBSD for that machine mode, but other guest operating |
58 | systems may not run at all, or behave strangely. |
59 | |
60 | |
61 | Quick start |
62 | ----------- |
63 | |
64 | To compile, type './configure' and then 'make'. This should work on most |
65 | Unix-like systems. If it does not, then please mail me a bug report. |
66 | |
67 | You might want to experiment with various CC and CFLAGS environment |
68 | variable settings, to get optimum performance. |
69 | |
70 | If you are impatient, and want to try out running a guest operating system |
71 | inside GXemul, read this: doc/guestoses.html#netbsdcatsinstall |
72 | |
73 | If you want to use GXemul for experimenting with code of your own, |
74 | then I suggest you compile a Hello World program according to the tips |
75 | listed here: doc/experiments.html#hello |
76 | |
77 | Please read the rest of the documentation in the doc/ sub-directory for |
78 | more detailed information on how to use the emulator. |
79 | |
80 | |
81 | Feedback |
82 | -------- |
83 | |
84 | If you have found GXemul useful in some way, or feel like sending me |
85 | comments or feedback in general, then mail me at anders(at)gavare.se. |
86 |
ViewVC Help | |
Powered by ViewVC 1.1.26 |