Commit Graph

1120 Commits

Author SHA1 Message Date
Alexei Svitkine
9f5d67497d update xcode project for sparsebundle support 2013-03-12 18:50:44 -04:00
Dave Vasilevsky
b05e0ba074 sparsebundle: Fix spacing in Makefile 2013-03-11 17:16:32 -04:00
Dave Vasilevsky
9f77458b75 Fix spacing 2013-03-03 17:05:02 -05:00
Dave Vasilevsky
17aabc4c40 Generify vhd, too 2013-02-24 15:57:18 -05:00
Dave Vasilevsky
917984e6ec Add to make links 2013-02-24 14:15:21 -05:00
Dave Vasilevsky
2a15911938 Full sparsebundle implementation 2013-02-24 14:11:29 -05:00
Dave Vasilevsky
091db05aac Partial implementation of sparsebundles; still needs Info.plist parsing 2013-02-24 13:02:16 -05:00
Alexei Svitkine
407edc8bfd Cleanup shm cleanup code. 2012-09-02 11:29:16 -04:00
Alexei Svitkine
77862b2103 Update version in version.h too. 2012-07-07 21:25:44 -04:00
Alexei Svitkine
3ddc4ff65d Make version number show up in Finder's get info and update Xcode project. 2012-07-07 14:08:38 -04:00
Alexei Svitkine
6d5a8230e6 Bump SheepShaver version to 2.4. 2012-07-07 11:51:31 -04:00
Alexei Svitkine
f32285ca47 Update SheepShaver xcode project for pict.c/pict.h addition 2012-07-07 11:39:56 -04:00
Alexei Svitkine
ea862c2bea Include pict.c and pict.h in 'make links'. 2012-07-07 11:33:57 -04:00
Charles
6f2635ee31 More clipboard-related fixes for Basilisk / SheepShaver
This patch fixes one lingering problem with the 64-bit clipboard code; the way it was designed, the Mac clipboard was being cleared every time a single item was being requested by GetScrap, causing clipboards with multiple items to be unceremoniously whittled down to one. On the other hand, a similar issue was causing some items to get duplicated on the host pasteboard. This patch fixes the issue by making conversion between the host pasteboard and the Mac clipboard a singular operation; when the pasteboard data changes on the host side, it is all converted and sent to the Mac pasteboard at once, and similarly, all Mac clipboard data is sent to the host pasteboard in one operation. Also, data from the host side is copied to the Mac clipboard only if it has changed since the last check, which should improve performance as conversions will not be done over and over every time the Mac side checks whether the scrap has changed.

In addition, I've added a rudimentary PICT converter. It's rudimentary at the moment, only going in one direction, converting to PICT and not from PICT, and currently it always rasterizes the source image and creates a PICT containing bitmap data. However, it's a start, and it should solve Ronald's issue with copying images from OS X to Mac OS. In the future, more could possibly be added. I've put the new PICT code in the main source directory instead of in the MacOSX subdirectory, so that it can be used by other platforms if needed.

I would like to leave the license on the new PICT code as "Public Domain" if that is okay.

Thanks,
Charles
2012-07-07 11:30:21 -04:00
Alexei Svitkine
68e71eb93e Update SheepShaver.xcoeproj to require 10.6 SDK for 64-bit code. 2012-07-05 22:30:40 -04:00
CharlesJS
2b51d635a7 International text clipboard patch for Basilisk II and SheepShaver
This patch adds support for international text to Basilisk II / SheepShaver's clipboard support. Text copied on the host side is converted from Unicode to the format that the classic Mac OS Script Manager expects, with localized font variants used if they are available on the emulated system (unfortunately, if a localized font is not available, the text will render incorrectly due to the nature of the Script Manager). When text is copied on the emulated system, the script of the current font is used to determine the encoding of the text, and it is converted to Unicode to be pasted on the host side.

This patch supports copying and pasting text containing multiple scripts; for example, "EnglishČeský日本語", where ranges (0, 7) and (8, 3) are Roman, (7, 1) and (11, 1) are Central European, and (12, 3) is Japanese, can be freely copied and pasted back and forth between the host and emulated platforms, provided that the emulated platform has localized Central European and Japanese fonts installed.

In order to get this to work, I rewrote pretty much all of clip_macosx64.mm. The code now completely uses the Cocoa framework rather than CoreFoundation and Pasteboard Manager. Because this API now uses the Mac OS X 10.6+ version of the pasteboard API, the minimum version of OS X supported by clip_macosx64.mm is now 10.6. I think this shouldn't be a problem, since the 32-bit version still exists, but if this version needs to support older releases, let me know and I can add version-check code to do so. One of the benefits of using the modern API, however, is that our rich-text format is no longer hard-coded to the RTF format, which means we have automatic support for any other format used by the OS X pasteboard system, which as of Lion seems to include RTF, UTF-16 text, UTF-8 text, 'ut16'/'ustl', and others, and which may be supplemented by other formats in future releases of OS X.

I hope you find this patch useful.

Charles
2012-07-05 22:27:09 -04:00
Alexei Svitkine
4d5ed80740 dyngen: Fix more leaks. 2012-07-01 13:52:45 -04:00
Alexei Svitkine
a3a45f54e9 dyngen: Don't leak func_name on realloc and fix indentation. 2012-07-01 13:48:09 -04:00
Alexander von Gluck IV
668b8f14ba dyngen: Don't leak func_name if realloc fails 2012-07-01 13:46:12 -04:00
Alexander von Gluck IV
612761981f dyngen: Don't leak already malloc'ed demangled_name 2012-07-01 13:27:56 -04:00
CharlesJS
ed28705ee3 Patch for copying and pasting styled text in Basilisk II / SheepShaver
Added code to parse the Classic Mac OS 'styl' resources, allowing formatted text to be copied and pasted out of SheepShaver, not just plain text. In order to do this, I made some changes to the emul_op mechanism, patching ZeroScrap() in addition to the scrap methods that were already being patched. The reason for this is that since we need to read data from multiple items that are on the clipboard at once, we cannot simply assume a zero at the beginning of each PutScrap() operation.

This patch uses RTF to store styled text on the host side; unfortunately, since the APIs to convert to and from RTF data are in Cocoa but not in CoreFoundation, I had to write the new portions in Objective-C rather than C, and changed the extension from .cpp to .mm accordingly. In the future, if we are confident that this file will only be used on Mac OS X 10.6 and up, we can rewrite the Pasteboard Manager code to use NSPasteboardReading/Writing instead. This would allow us to read and write NSAttributedString objects directly to and from the pasteboard, which would make sure we were always using the OS's preferred rich text format internally instead of hard-coding it specifically to RTF as in the current implementation.

I believe that this patch should also fix the problem Ronald reported with copying accented characters.

Since I am new to 68k assembly and the emul_op mechanism, I would appreciate if someone could double-check all my changes to make sure that I have done everything correctly.

Thanks,
Charles
2012-06-30 22:20:55 -04:00
Alexei Svitkine
3fc0e4dd98 Rename clip_macosx64.cpp to clip_macosx64.mm in preparation for a patch from Charles Srstka. 2012-06-30 21:40:16 -04:00
Alexei Svitkine
b1d756ce96 Ignore Info.plist. 2012-06-21 21:55:53 -04:00
Amadeusz Sławiński
8d5dc328e1 struct to class
In file included from ../kpx_cpu/sheepshaver_glue.cpp:32:
In file included from ../kpx_cpu/src/cpu/ppc/ppc-cpu.hpp:24:
../kpx_cpu/include/basic-cpu.hpp:50:1: warning: struct 'task_struct' was previously declared as a class [-Wmismatched-tags]
struct task_struct;
^
../kpx_cpu/include/task-plugin.hpp:27:7: note: previous use is here
class task_struct;
      ^
In file included from ../kpx_cpu/sheepshaver_glue.cpp:32:
In file included from ../kpx_cpu/src/cpu/ppc/ppc-cpu.hpp:24:
../kpx_cpu/include/basic-cpu.hpp:52:1: warning: 'basic_cpu' defined as a struct here but previously declared as a class [-Wmismatched-tags]
struct basic_cpu
^
../kpx_cpu/include/task-plugin.hpp:29:1: note: did you mean struct here?
class basic_cpu;
^~~~~
struct
../kpx_cpu/sheepshaver_glue.cpp:725:13: warning: unused function 'dump_log' [-Wunused-function]
static void dump_log(void)
            ^
3 warnings generated.
2012-06-21 21:51:52 -04:00
Alexei Svitkine
70f9c4dab9 Remove unused labels. 2012-06-21 21:48:32 -04:00
Alexei Svitkine
a40257b33a Use clip_macosx64.cpp on MacOSX autoconf-based builds.
Note: Checks for __LP64__ explicitly because build/host/target
all get reported as i686-apple-darwin10.8.0 (not x86_64).

Also fixes a compile warning in clip_macosx64.cpp.
2012-06-21 21:28:55 -04:00
Alexei Svitkine
99e8914019 Add Passteboard Manager implementation of Mac OS X clipboard code.
Enabled by default for 64-bit Xcode build.

(configure changes forthcoming)

Based on patch by Jean-Pierre Stierlin <chombier@free.fr>.
2012-06-21 20:08:07 -04:00
Alexei Svitkine
8c9f1475d5 Ignore Darwin utils. 2012-06-19 00:41:01 -04:00
Alexei Svitkine
1bded034ad Support more reloc types in dyngen.c. 2012-06-19 00:17:30 -04:00
Amadeusz Sławiński
512c2f5288 Fix warning when doing ./autogen.sh
+ Running autoheader: configure.ac:1393: warning: AC_CACHE_VAL(ac_cv_gcc_no_strict_aliasing, ...): suspicious presence of an AC_SUBST in the second argument, where no actions should be taken
2012-06-18 20:35:57 -04:00
Alexander von Gluck IV
5dc5f50d46 UNIX main: don't set int to NULL 2012-06-18 20:33:30 -04:00
Alexei Svitkine
ece0a03798 Ignore Xcode build files. 2012-06-18 19:14:19 -04:00
Alexei Svitkine
681a9aa5c1 Ignore dyngen files generated by Xcode build. 2012-06-18 19:11:43 -04:00
Christian Bauer
3c66c348c2 ignore generated files 2012-06-18 20:14:22 +02:00
Christian Bauer
ca96911c07 add SheepShaver -> BasiliskII symlinks 2012-06-18 20:02:42 +02:00
asvitkine
d3787c146f force inlining to fix building with newer versions of gcc 2012-06-18 05:09:46 +00:00
asvitkine
d3267154c8 check for sys/stropts.h and stropts.h headers 2012-06-17 23:14:11 +00:00
asvitkine
8db4abc28d [Alexander von Gluck IV] BeOS: Fix missing ;
4fb0f92aaf065276712a36cb169081ebc41eeeb4
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Sun, 17 Jun 2012 03:47:26 +0000
Subject: [PATCH] Haiku: Fix missing ;
2012-06-17 16:52:58 +00:00
asvitkine
6566ae16fa Dump PPC disassembly on crash 2012-06-16 02:16:40 +00:00
asvitkine
0b76eda93c [Steven Noonan] configure.ac: fix TUN/TAP detection on Linux
28ff27fc3ae3878fe9ca589f3c55c4261814266a
From: Steven Noonan <steven@uplinklabs.net>
Date: Wed, 1 Jun 2011 01:34:07 -0700
Subject: [PATCH] configure.ac: fix TUN/TAP detection on Linux

Signed-off-by: Steven Noonan <steven@uplinklabs.net>
2012-06-15 23:00:24 +00:00
asvitkine
a5cf327a44 [Steven Noonan] configure.ac: enable JIT on 64-bit Intel Mac
d4dc0c70b24dc5981e752403e8fe047637d712a1
From: Steven Noonan <steven@uplinklabs.net>
Date: Wed, 1 Jun 2011 17:48:33 -0700
Subject: [PATCH] configure.ac: enable JIT on 64-bit Intel Mac

Signed-off-by: Steven Noonan <steven@uplinklabs.net>
2012-06-15 22:58:29 +00:00
asvitkine
9325e35636 fix gamma code so that fades in Ferazel's Wand actually work 2012-03-28 03:30:49 +00:00
asvitkine
2676e1bd13 fix gamma fade code to make Ferazel's Wand launch 2012-03-27 03:43:28 +00:00
asvitkine
c13fd620a1 fix some unused vars warnings 2012-03-01 04:25:10 +00:00
asvitkine
e9b8dd6877 always use the version of the code that scans backward on x86 2012-03-01 04:15:59 +00:00
asvitkine
6badecc0da commit PPC testsuite docs from a web.archive.org cache of Gwenole's site 2012-02-12 16:56:48 +00:00
asvitkine
14355b28cd fix test-powerpc build 2012-02-12 16:41:28 +00:00
asvitkine
f964fdd22c Force tcp_input.c to be compiled with -O1 to workaround a compiler bug. 2012-02-11 02:03:36 +00:00
asvitkine
9c2b182d9a explicitly add /Library/Frameworks to framework search path 2012-01-18 23:58:31 +00:00
asvitkine
f84ed6a008 add LSMinimumSystemVersionByArchitecture to info plist 2012-01-15 23:28:29 +00:00
asvitkine
8ebf82224f tweaking compiler settings for 64-bit build 2012-01-15 23:26:52 +00:00
asvitkine
3024435dd0 change compiler options for better performance 2012-01-15 23:13:39 +00:00
asvitkine
3eb4344a98 prefer 32-bit over 64-bit on intel 2012-01-13 02:49:45 +00:00
asvitkine
172b7e6982 change sdk / macosx versions a bit 2012-01-06 23:43:10 +00:00
asvitkine
626306f902 add a script to change SDL framework's load path 2012-01-06 23:38:33 +00:00
asvitkine
447a06d9c3 include system frameworks in a standard way 2012-01-06 23:23:54 +00:00
asvitkine
e76ac8df89 fix Info.plist in xcode project 2012-01-05 23:28:00 +00:00
asvitkine
f989745171 copy SDL framework step 2012-01-04 23:12:54 +00:00
asvitkine
3c693c0b8d add ppc build to xcode project 2012-01-02 00:03:37 +00:00
asvitkine
da96cfd110 separate kpx_cpu into separate xcode target 2012-01-01 23:46:28 +00:00
asvitkine
f68b4c1152 remove some code that was accidentally committed 2012-01-01 23:18:36 +00:00
asvitkine
60779756ab better cleanup of shared memory on failure 2012-01-01 19:11:31 +00:00
asvitkine
84a6ec3a05 wrap init_sdl() in USE_SDL ifdef 2012-01-01 18:51:40 +00:00
asvitkine
df4342b6db fix compile error introduced by my recent refactoring 2012-01-01 18:50:01 +00:00
asvitkine
78ea64bbd9 fix ppc build breakage 2011-12-30 17:38:39 +00:00
asvitkine
4161b3d153 successfull built of x86 32/64 UB via xcode proj 2011-12-30 01:33:26 +00:00
asvitkine
dc0993ca6a trying to get xcode project to build a fat 32/64 bit binary - not yet there 2011-12-30 00:58:32 +00:00
asvitkine
d3ec12fc1c add utils_macosx.mm/h 2011-12-29 07:43:25 +00:00
asvitkine
dcf65b4d27 move NSAutoReleasePool_wrap() into its own file 2011-12-29 07:39:56 +00:00
asvitkine
c78c3046db refactor init_sdl() into a function 2011-12-28 23:33:04 +00:00
asvitkine
d58da945c6 refactor install_signal_handlers() into its own function 2011-12-28 23:30:25 +00:00
asvitkine
7930deea4d refactor load_mac_rom() into a function 2011-12-28 23:24:30 +00:00
asvitkine
cea73a29ed refactor get_system_info() into a function 2011-12-28 23:17:29 +00:00
asvitkine
57416ef7b4 add pre-generated config files for Xcode project
so far, only the x86-64 config
2011-12-28 22:38:03 +00:00
asvitkine
97c7aa5756 delete unused vars 2011-12-28 20:21:40 +00:00
asvitkine
fb4a2a6dc6 fix warning casting pointer to int 2011-12-28 20:15:08 +00:00
asvitkine
f11ad3129b fix release build 2011-12-28 18:17:10 +00:00
asvitkine
eebe0b0c13 don't deref desc after deleting it! 2011-12-28 18:14:58 +00:00
asvitkine
c2c88efcc3 first stab at xcode project for sheepshaver - this is still a work in progress 2011-12-28 18:01:17 +00:00
asvitkine
0f472ed95e use non-deprecated methods 2011-12-28 17:51:56 +00:00
asvitkine
a97df3c953 fix a warning 2011-12-27 07:22:18 +00:00
asvitkine
faadf4cbb1 correct whitespace 2011-12-26 22:44:22 +00:00
asvitkine
18729e6f07 [Douglas Mencken]
Add recognition for 970MP processors.

I took these values from this kernel patch from year 2005:
http://lists.ozlabs.org/pipermail/linuxppc64-dev/2005-July/004688.html
2011-12-26 22:41:53 +00:00
asvitkine
39a3b75024 abort editing virtual machine name if any action is chosen 2010-12-28 02:57:46 +00:00
asvitkine
f1a2620576 - Add a prefix header which is used in place of SheepShaver's config.h to
allow correct compilation of the Universal Binary.
- Update project to work with Xcode on Snow Leopard.
- Add missing #include <unistd.h>
2010-12-28 02:50:55 +00:00
asvitkine
453f0e8a28 Add macro guards for config.h. 2010-12-28 02:36:09 +00:00
asvitkine
63cf1fadc3 [Geoffrey Brown]
VHD support
2010-10-19 22:20:01 +00:00
asvitkine
415e7d3f68 [Dave Dixon]
Patch file to fix JIT compiler on 64-bit Mac OS X 10.6 when using gcc 4.2.
This patch removes register rbx usage when compiling on 64-bit OS X.
2010-10-18 22:02:29 +00:00
asvitkine
59f51815f7 [Geoffrey Brown]
bin/cue support
2010-10-06 00:34:15 +00:00
asvitkine
b2d58d423e Fix compile problem with --enable-jit=no 2010-09-24 00:36:34 +00:00
asvitkine
bb627f28fe add braces around @interface declaration to compile with clang 2010-08-22 19:33:25 +00:00
asvitkine
14339fb01f add NULL return value to macho timer function 2010-08-22 19:31:36 +00:00
asvitkine
8a062fefdc fix printf safety warning 2010-08-22 18:57:11 +00:00
asvitkine
15b346b031 use setenv in preference of putenv 2010-08-22 18:56:11 +00:00
asvitkine
e03ad25362 Fixed for Snow Leopard build. 2010-07-27 03:14:34 +00:00
asvitkine
0973ee0e16 Fix compile on Snow Leopard. 2010-07-27 02:57:10 +00:00
asvitkine
da828ffc73 Fix prefs_macosx.mm compile issue with Snow Leopard. 2010-07-27 02:55:09 +00:00
asvitkine
efad3ba70a use linked list for timers to avoid running out of descriptors 2010-05-05 00:29:46 +00:00
asvitkine
614b33bcd8 [Joel Mauras]
Let makefile build relatives links between SheepShaver and BasiliksII so
they can be moved anywhere into the file system as long as they stay side
by side without having to rebuid the links.
2010-04-08 03:50:26 +00:00
asvitkine
78027e7a46 [Amadeusz Slawinski]
These patches fix the issues with using newer versions of autoconf,
which led to generating broken configure script.
2010-03-07 00:45:10 +00:00
asvitkine
b3c5b07f54 fix more platform compile failures caused by refactoring, based
on patch by Amadeusz Sławiński
2010-03-02 00:37:17 +00:00
cebix
4f28f70207 fixed warnings 2010-02-21 09:59:52 +00:00
cebix
c6a52b6eb2 fixed const-ness 2010-02-21 09:59:14 +00:00
cebix
23b0bda1a5 fixed const-ness and compiler warnings 2010-02-21 09:58:47 +00:00
asvitkine
2b03c79d48 fix dyngen.c breakage on non-MACHO platforms 2010-01-15 01:47:17 +00:00
asvitkine
5ca84603bc [ Tim Douglas <timdoug@gmail.com> ]
use an auto release pool around "Preferences..." menu item creation on Mac OS X
2010-01-02 22:08:51 +00:00
asvitkine
6677e5824c [ Tim Douglas <timdoug@gmail.com> ]
use an auto release pool around modal prefs dialog on Mac OS X
2010-01-02 19:24:24 +00:00
asvitkine
8e1a2f7f48 use correct variable name 2009-11-19 02:07:44 +00:00
asvitkine
ded367a176 [ Patch from Jean-Pierre <chombier@free.fr> ]
More changes to support mach-o x86_64.
2009-11-13 01:46:35 +00:00
asvitkine
f4705aa5e1 code whitespace cleanup and patch_relocations() function 2009-11-08 19:11:02 +00:00
asvitkine
df4aef1fba [ Patch from Jean-Pierre <chombier@free.fr> ]
Dyngen patch for Snow Leopard x86_64 compatibility.
This work is mostly based on the unofficial and incomplete x86_64 mach-o patch of qemu.
2009-11-08 18:16:31 +00:00
asvitkine
3856561935 Fix builds on platforms that may have gotten broken due to my vmdir changes. 2009-09-21 03:34:14 +00:00
asvitkine
c294074fa7 Launcher: Check if file exists. 2009-08-31 05:08:21 +00:00
asvitkine
63b4f8d704 better default prefs 2009-08-30 17:56:30 +00:00
asvitkine
f06f035428 Launcher: Renaming VMs in list. 2009-08-26 07:09:06 +00:00
asvitkine
868bb283d2 [Michael Schmitt]
Attached is a patch to SheepShaver, to fix a problem where the ROM file can only be found on the first boot.

When a user creates a new SheepShaver machine, there is no preference file, so there is not ROM path preference. SheepShaver has logic so that in this case, it will look for a ROM file named "ROM" or "Mac OS ROM" in the current directory.

The user starts SheepShaver in order to get to the built-in Preferences Editor, and changes various settings (such as creation of a hard disk). Then the user reboots.

If the user forgot to set the ROM path at this time, then SheepShaver can no longer boot. The only recourse is for the user to find and delete the preferences file, or use an external preferences editor to set the ROM path.

The fix is to change SheepShaver to use the default ROM names when either the rom path is null (no preference) OR an empty string (preference exists with no rom path).
2009-08-26 00:11:56 +00:00
asvitkine
0075c1faab [Michael Schmitt]
Attached is a patch to SheepShaver, to fix a SIGSEGV crash that occurs when booting a new machine with OS 7.5.

One of the bytes in the xPRAM portion of the NVRAM controls which version of the system memory manager is used by OS 7.5: the legacy 680x0 memory manager or the PPC memory manager (aka the "Modern Memory Manager"). OS 7.5 is supposed to be able to use either one, but for some reason SheepShaver crashes on boot if the 680x0 version is used.

Later Mac OS versions don't have this problem. They don't support the 680x0 version, so they force the PPC version to be used.

The fix is to have SheepShaver initialize the NVRAM to use the PPC memory manager. Note: This is supposed to be the default in OS 7.5.

This affects when a new NVRAM file is used, or when it is initialized after doing zapping the PRAM.
2009-08-26 00:06:29 +00:00
asvitkine
53e416c4b7 Fix position of "browse" button for keycodes file when resizing prefs window 2009-08-18 18:30:19 +00:00
asvitkine
b3b5db5456 [Michael Schmitt]
Attached is a patch to SheepShaver to fix memory allocation problems when OS X 10.5 is the host. It also relaxes the 512 MB RAM limit on OS X hosts.


Problem
-------
Some users have been unable to run SheepShaver on OS X 10.5 (Leopard) hosts. The symptom is error "ERROR: Cannot map RAM: File already exists".

SheepShaver allocates RAM at fixed addresses. If it is running in "Real" addressing mode, and can't allocate at address 0, then it was hard-coded to allocate the RAM area at 0x20000000. The ROM area as allocated at 0x40800000.

The normal configuration is for SheepShaver to run under SDL, which is a Cocoa wrapper. By the time SheepShaver does its memory allocations, the Cocoa application has already started. The result is the SheepShaver memory address space already contains libraries, fonts, Input Managers, and IOKit areas.

On Leopard hosts these areas can land on the same addresses SheepShaver needs, so SheepShaver's memory allocation fails.


Solution
--------
The approach is to change SheepShaver (on Unix & OS X hosts) to allocate the RAM area anywhere it can find the space, rather than at a fixed address.

This could result in the RAM allocated higher than the ROM area, which causes a crash. To prevent this from occurring, the RAM and ROM areas are allocated contiguously.

Previously the ROM starting address was a constant ROM_BASE, which was used throughout the source files. The ROM start address is now a variable ROMBase. ROMBase is allocated and set by main_*.cpp just like RAMBase.

A side-effect of this change is that it lifts the 512 MB RAM limit for OS X hosts. The limit was because the fixed RAM and ROM addresses were such that the RAM could only be 512 MB before it overlapped the ROM area.


Impact
------
The change to make ROMBase a variable is throughout all hosts & addressing modes.

The RAM and ROM areas will only shift when run on Unix & OS X hosts, otherwise the same fixed allocation address is used as before.

This change is limited to "Real" addressing mode. Unlike Basilisk II, SheepShaver *pre-calculates* the offset for "Direct" addressing mode; the offset is compiled into the program. If the RAM address were allowed to shift, it could result in the RAM area wrapping around address 0.


Changes to main_unix.cpp
------------------------
1. Real addressing mode no longer defines a RAM_BASE constant.

2. The base address of the Mac ROM (ROMBase) is defined and exported by this program.

3. Memory management helper vm_mac_acquire is renamed to vm_mac_acquire_fixed. Added a new memory management helper vm_mac_acquire, which allocates memory at any address.

4. Changed and rearranged the allocation of RAM and ROM areas.

Before it worked like this:

  - Allocate ROM area
  - If can, attempt to allocate RAM at address zero
  - If RAM not allocated at 0, allocate at fixed address

We still want to try allocating the RAM at zero, and if using DIRECT addressing we're still going to use the fixed addresses. So we don't know where the ROM should be until after we do the RAM. The new logic is:

  - If can, attempt to allocate RAM at address zero
  - If RAM not allocated at 0
      if REAL addressing
         allocate RAM and ROM together. The ROM address is aligned to a 1 MB boundary
      else (direct addressing)
         allocate RAM at fixed address
  - If ROM hasn't been allocated yet, allocate at fixed address

5. Calculate ROMBase and ROMBaseHost based on where the ROM was loaded.

6. There is a crash if the RAM is allocated too high. To try and catch this, check if it was allocated higher than the kernel data address.

7. Change subsequent code from using constant ROM_BASE to variable ROMBase.


Changes to Other Programs
-------------------------
emul_op.cpp, main.cpp, name_registery.cpp, rom_patches.cpp, rsrc_patches.cpp, emul_ppc.cpp, sheepshaver_glue.cpp, ppc-translate-cpp:
Change from constant ROM_BASE to variable ROMBase.

ppc_asm.S: It was setting register to a hard-coded literal address: 0x40b0d000. Changed to set it to ROMBase + 0x30d000.

ppc_asm.tmpl: It defined a macro ASM_LO16 but it assumed that the macro would always be used with operands that included a register specification. This is not true. Moved the register specification from the macro to the macro invocations.

main_beos.cpp, main_windows.cpp: Since the subprograms are all expecting a variable ROMBase, all the main_*.cpp pgrams have to define and export it. The ROM_BASE constant is moved here for consistency. The mains for beos and windows just allocate the ROM at the same fixed address as before, set ROMBaseHost and ROMBase to that address, and then use ROMBase for the subsequent code.

cpu_emulation.h: removed ROM_BASE constant. This value is moved to the main_*.cpp modules, to be consistent with RAM_BASE.

user_strings_unix.cpp, user_strings_unix.h: Added new error messages related to errors that occur when the RAM and ROM are allocated anywhere.
2009-08-18 18:26:11 +00:00
asvitkine
3867b28037 load the VMSettingsWindow nib for prefs window in SheepShaver 2009-08-18 18:22:01 +00:00
asvitkine
c465e7239e Launcher: Use default settings from NIB for new VM. 2009-08-18 03:42:11 +00:00
asvitkine
bc7b9a6c4a MacOSX: Use the prefs editor from the Launcher project. 2009-08-18 03:27:50 +00:00
asvitkine
3e7168c78d allow settings controller to work in non-standalone mode 2009-08-18 03:26:17 +00:00
asvitkine
a98f16a1bd support both foo.sheepvm and foo.sheepvm/ command-line parameters 2009-08-18 02:36:59 +00:00
asvitkine
5a8dfa1b36 [Charles Srstka]
Attached is a set of patches to port the precise timer that is currently used in the Linux and BeOS builds of SheepShaver to Mac OS X (and any other Mach-based operating systems).

Currently, the Linux build uses the clock_gettime() function to get nanosecond-precision time, and falls back on gettimeofday() if it is not present. Unfortunately, Mac OS X does not currently support clock_gettime(), and gettimeofday() has only microsecond granularity. The Mach kernel, however, has a clock_get_time() function that does very nearly the same thing as clock_gettime(). The patches to BasiliskII cause the timing functions such as timer_current_time() to use clock_get_time() instead of gettimeofday() on Mach-based systems that do not support clock_gettime().

The changes to SheepShaver involve the precise timer. The existing code for Linux uses pthreads and real-time signals to handle the timing. Mac OS X unfortunately does not seem to support real-time signals, so Mach calls are again used to suspend and resume the timer thread in order to attempt to duplicate the Linux and BeOS versions of the timer. The code is somewhat ugly right now, as I decided to leave alone the pre-existing style of the source file, which unfortunately involves #ifdefs scattered throughout the file and some duplication of code. A future patch may want to clean this up to separate out the OS-specific code and put it all together at the top of the file. However, for the time being, this seems to work.

This has not been extensively tested, because I have not been able to get my hands on a good test-case app for the classic Mac OS that would run inside the emulator and try out the timer. However, performance does seem to be better than with the pre-existing code, and nothing seems to have blown up as far as I can tell. I did find a game via a Google search -  Cap'n Magneto - that is known to have problems with Basilisk/SheepShaver's legacy 60 Hz timer, and the opening fade-to-color for this game appears to run much more smoothly with the precise timer code in place.
2009-08-17 20:44:30 +00:00
asvitkine
8ac0507a39 re-arrange virtual machines by drag and drop
add a contextual menu that also allows to
reveal the selected virtual machine in finder
2009-08-12 02:18:19 +00:00
asvitkine
fbef7bcf22 more improvements to Launcher 2009-08-06 18:12:25 +00:00
asvitkine
7004db923a allow looking inside bundles and default disk location to inside bundle 2009-08-06 06:42:43 +00:00
asvitkine
61770c58eb keep track of running VMs 2009-08-02 23:46:44 +00:00
asvitkine
b67b983156 disable buttons when no selection 2009-08-02 23:17:18 +00:00
asvitkine
abbd1785b1 delete vm from list 2009-08-02 22:37:34 +00:00
asvitkine
b38bb12ab3 New Virtual Machine button working 2009-08-02 20:24:38 +00:00
asvitkine
820ae8100c misc changes 2009-08-02 19:51:15 +00:00
asvitkine
d38c755204 Launching VMs 2009-08-02 18:59:26 +00:00
asvitkine
07a2d906c4 add icon to launcher 2009-08-02 18:42:06 +00:00
asvitkine
e8e5440b31 initial import of SheepShaver Launcher project for Mac OS X (WIP) 2009-08-02 18:34:57 +00:00
asvitkine
80a7589e29 only if standalone 2009-08-01 15:31:54 +00:00
asvitkine
743888f407 fix PrefsEditor build 2009-08-01 15:31:31 +00:00
asvitkine
5cef748ac7 only "continue previous delay" if delay is 0 2009-08-01 07:02:41 +00:00
asvitkine
ccdb8ab3c0 correct implementation of PrimeTime(0) 2009-07-31 20:43:28 +00:00
asvitkine
57b64245ad handle one case of PrimeTime(0) 2009-07-31 19:41:50 +00:00
asvitkine
5b958defa7 support for .sheepvm bundles on macosx, containing "prefs" and "nvram" files 2009-07-23 19:12:51 +00:00
asvitkine
581ff8d86f add prefs option to ignore illegal instructions (ignoreillegal) 2009-07-20 18:50:28 +00:00
asvitkine
9c8387f8d0 more syncing 2009-04-14 00:52:15 +00:00
asvitkine
f2630f5e6a sync Makefile.in with Unix version 2009-04-14 00:36:13 +00:00
asvitkine
7fc0d3137b syncing Windows configure.ac file with the unix one 2009-04-14 00:17:56 +00:00
asvitkine
fceeb39d3c Restore OSX built-in prefs editor. Change the configure.ac check for
no_x to WANT_GTK=no since X may be installed when building on OS X,
but we probably don't want it!
2009-03-18 16:09:15 +00:00
asvitkine
da540a74f6 [patch by Mike Sliczniak]
Here is a patch to allow compiling of SS and B2 with an SDL Framework. You can
get this by downloading from:

http://www.libsdl.org/release/SDL-1.2.13.dmg

Here is how I tested on an intel 32-bit mac with Mac OS X 10.5.6:

SS ./autogen.sh --disable-standalone-gui --enable-vosf --enable-sdl-framework --enable-sdl-framework-prefix=/Users/mzs/Library/Frameworks --enable-sdl-video --disable-sdl-audio --enable-addressing=real
--without-esd --without-gtk --without-mon --without-x

SS /autogen.sh --disable-standalone-gui --enable-vosf --disable-sdl-framework --disable-sdl-video --disable-sdl-audio --enable-addressing=real --without-esd --without-gtk --without-mon --with-x

B2 ./autogen.sh --disable-standalone-gui --enable-vosf --enable-sdl-framework --enable-sdl-framework-prefix=/Users/mzs/Library/Frameworks --enable-sdl-video --enable-sdl-audio --enable-addressing=real --without-esd --without-gtk --without-mon --without-x --enable-jit-compiler

B2 ./autogen.sh --disable-standalone-gui --enable-vosf --disable-sdl-framework --disable-sdl-video --disable-sdl-audio --enable-addressing=real --with-esd --without-gtk --without-mon --with-x --enable-jit-compiler

(esound does not really work on mac, it needs some better coreaudio patches.)

configure.ac for SS has two little additional fixes so that the Cocoa prefs gui
does not get built if you are building for X11 and so that you can use esd, sdl,
or coreaudio for sound.
2009-03-03 08:07:22 +00:00
asvitkine
3e12a80a3b [Patch by Mike Sliczniak]
I was testing some other SS patches and I noticed that when I ran an X11
build of SS there were not all the video modes I expected in the the
control strip. Mac OS X 10.5 changed the form of the DISPLAY environment
variable. The reason for this is that the DISPLAY variable looks like
this in Leopard:

/tmp/launch-XXXXXX/:0

The Xs are like in mktemp.
2009-02-19 07:09:35 +00:00
asvitkine
e083e0ac33 [Patch by Mike Sliczniak]
Here is a patch that has a shell script cpr.sh to recursively copy directories but
discarding things that cause problems at least on 10.4 when making the .app bundles.
2009-02-19 07:02:46 +00:00
asvitkine
04bec66567 don't re-declare sigsegv_info_t, instead use the one from the header 2009-02-11 20:44:49 +00:00
asvitkine
ca2b9b5832 [Patch from Mike Sliczniak]
This first patch gets B2 and SS to build under Leopard and Tiger.

I tested this on a 32-bit intel 10.5.6 mac like so:

B2
./autogen.sh --disable-standalone-gui --enable-vosf --enable-sdl-video --enable-sdl-audio --enable-addressing=real --without-esd --without-gtk --without-mon --without-x

SS
./autogen.sh --disable-standalone-gui --enable-vosf -enable-sdl-video --disable-sdl-audio --enable-addressing=real --without-esd --without-gtk --without-mon --without-x --enable-jit

There is also a little tweak so that you can use sdl audio in SheepShaver when building for Mac OS X.
2009-02-11 19:23:53 +00:00
asvitkine
d6db773362 [patch from Darik Horn <dajhorn@vanadac.com> ]
Makes SheepShaver compatible with Ubuntu Intrepid and
other distros that bundle the gcc-4.3 compiler.

The patch changes two things:

1. Renames the block_cache where its name collides with its class
definition.

2. Fixes the "explicit template specialization cannot have a storage
class" error in the ppc-dyngen-ops.cpp file.
2009-01-15 23:25:08 +00:00
asvitkine
06ac24df65 Fix Leopard build. 2008-11-21 01:09:28 +00:00
asvitkine
5505a5dc62 Change < to - in qsort compare functions to correctly return 0 for equality. 2008-09-14 19:54:36 +00:00
asvitkine
bf7408e151 Fix prefs 2008-07-20 07:29:46 +00:00
asvitkine
c23511080e [patch from Kelvin Delbarre]
Software cursor mode is now supported, although currently the existing hardware
cursor mode is used whenever possible. (Software mode will be used if you are
running with a recent version of SDL's Quartz video driver, since a bug in SDL
1.2.11 and later prevents the hardware cursor from working properly with that
driver.)

In hardware cursor mode, the hot-spot is now determined heuristically. Formerly
it could not be determined and was always (1,1), an annoyance for many cursors
other than the arrow.

In hardware cursor mode, the cursor will now be hidden when requested by the
emulated OS (such as when you are typing in a text field).

In hardware cursor mode, some cursor image formats that the code does not handle
correctly will now be rejected, causing the emulated OS to revert temporarily to
software cursor mode. Formerly you would just end up with random garbage for a
cursor. This typically happened for grayscale or color cursors; rejecting images
with rowBytes != 2 eliminates the worst cases.
2008-06-25 02:52:52 +00:00
asvitkine
d885e5ccf4 [patch from Kelvin Delbarre] SDL's Quartz video implementation maps command
clicks to right-clicks and option-clicks to middle-clicks, a feature intended
for Mac users with single-button mice who are running SDL-based games that
require a multi-button mouse. This is unhelpful in SheepShaver, where we want
command-clicks and option-clicks to be passed through unchanged to the emulated
Mac OS. We can disable the unwanted behavior by setting an environment variable
SDL_HAS3BUTTONMOUSE intended for this very purpose.

A similar change in main_windows.cpp is NOT required, because only the Quartz
video implementation is involved.

By SDL convention, putenv is used in preference to setenv, although for Unix
platforms it doesn't matter.
2008-06-22 20:30:12 +00:00
asvitkine
e8e2f3727a Don't profile by default - as this is no use to non-developers. 2008-06-20 00:50:33 +00:00
asvitkine
1002714623 Add frameskip 0 ("Dynamic") to MacOSX Prefs Editor, and fix line endings
and deprication warnings in the Objective-C code. Also, don't specify array
size with a macro in a header file.
2008-06-17 04:26:56 +00:00
gbeauche
b083b08fd1 Cope with recent run-time assembler changes. 2008-02-12 14:52:25 +00:00
gbeauche
b5746b4f68 Add SSSE3 optimizations (Intel Core 2 CPUs and newer) for LVX, STVX, VPERM.
This brings an overall +10% performance improvement in AltiVec Fractal Carbon.
2008-01-01 21:51:56 +00:00
gbeauche
c581996f82 Detect SSE 4.1 and SSE 4.1. 2008-01-01 13:34:47 +00:00
gbeauche
054c37ca0c Happy New Year! 2008-01-01 09:47:39 +00:00
gbeauche
19e145ad16 Sync with new SIGSEGV API. 2007-12-30 09:18:40 +00:00
gbeauche
38501abd6a Fix build with new MacOS X extfs implementation (in C++). 2007-12-30 09:15:00 +00:00
asvitkine
dc524bb30a use the new SDL 1.2.12 env variable to allow the OS to launch the screensaver
when sheepshaver is running - must be linking to sdl 1.2.12 or later for it
to take effect
2007-08-27 21:45:13 +00:00
asvitkine
5b161928ed copy prefs stuff into app bundle 2007-07-28 15:50:30 +00:00
asvitkine
059540bbb8 more prefs stuff 2007-07-28 15:46:17 +00:00
asvitkine
eae5f4ec20 support new prefs editor handling (rerun autogen) 2007-07-28 15:44:36 +00:00
asvitkine
9fd74d26cf make unix root textbox larger in os x prefs editor 2007-07-28 15:23:12 +00:00
asvitkine
3c07ca5344 Standalone NIB, used for the PrefsEditor within SheepShaver 2007-07-28 15:17:46 +00:00
asvitkine
e90be61f19 Preparing for built-in Cocoa prefs editor 2007-07-28 14:53:08 +00:00
gbeauche
1cf3b07fe6 Use semaphores to suspend the redraw thread while switching video mode. 2007-07-21 11:41:07 +00:00
gbeauche
efa32be9ec Optimize invalidate_cache_range() for short ranges. 2007-07-21 10:25:51 +00:00
asvitkine
ff172bd87d Some changes to PrefsEditor stuff to ease future integration with SheepShaver. 2007-07-16 02:38:53 +00:00
gbeauche
8da1a472ae Add native audio support (without SDL) from Nigel's Basilisk II port to MacOS X. 2007-06-13 16:34:13 +00:00
gbeauche
7adb1cace9 Add mips cxmon files 2007-06-13 12:11:55 +00:00
gbeauche
3d69ce66be ifdef() constructs cause problems, make sure to automatically include the m4 directory while
regenerating the configure script (provided no ACLOCAL_FLAGS are passed). i.e. ./autogen.sh
now just works, even on MacOS X!
2007-06-13 12:09:05 +00:00
gbeauche
b20a76f580 merge PPC_PROFILE_REGS_USE fixes from KPX branch 2007-02-17 09:01:31 +00:00
gbeauche
8e0088c4c6 generate lwarx/swcx. native code only for uniprocessor emulation 2007-02-17 08:59:56 +00:00
asvitkine
c6560c2152 fix configure.ac unix script to not fail when AM_PATH_GTK and AM_PATH_ESD
are not defined (such as is usually the case on Mac OS X)
2007-01-24 14:33:52 +00:00
asvitkine
3b28326f7e ifndef so prefs editor compiles 2007-01-24 03:36:48 +00:00
asvitkine
b1f1592f44 OSX Cocoa PrefsEditor - code and Xcode project 2007-01-24 03:35:51 +00:00
asvitkine
be4aba2f82 Fix Master of Orion II 2007-01-21 17:21:23 +00:00
gbeauche
9999881c78 Enable JIT in non-constructor so that a user-defined value can be set later 2007-01-21 13:44:27 +00:00
gbeauche
3b6a579f33 Optimize lwarx/stwcx for uniprocessors and generate code for them. There is
no performance increase even though those two instructions represented approx
18M of untranslated instructions on a simple boot to MacOS.
2007-01-18 07:02:35 +00:00
gbeauche
b9486d35e3 Rearrange powerpc_registers struct and nuke fp_result register which is
only needed for JIT (and to be handled differently in the future).
2007-01-17 07:05:19 +00:00
gbeauche
69d3fcba95 Update for new instr_info_t format 2007-01-17 06:56:09 +00:00
gbeauche
5b0b60da76 Remove specialised decoders. This will be done differently, if necessary. 2007-01-17 06:20:36 +00:00
gbeauche
e4af8a1909 Report SSSE3 instead of SSE4 (to be released later). 2007-01-15 07:00:16 +00:00
gbeauche
9dfecc4279 Update CPU table to kernel 2.6.17+ code (POWER6, Cell, PA6T). Fix detection
of the CPU string (separator is actually ','). Fix detection of CPU clock
frequency when it is expressed as a float.
2006-10-26 05:25:19 +00:00
gbeauche
954593d1c0 Generate spcflags checks at the start of the block. This makes better
opportunities when CR cache is implemented.
2006-07-30 16:29:10 +00:00
gbeauche
bcf7f9a2cd Add throw() specs for Linux glibc platforms 2006-07-30 09:49:21 +00:00
gbeauche
2c27914196 Fix op_record_cr6_VD() to use less branches (gcc 4.1.2 build fix on x86-32) 2006-07-19 22:21:46 +00:00
gbeauche
874bab017c Fix for parallel build (make -j20 here) 2006-07-19 06:00:26 +00:00
gbeauche
7705f85655 Add missing implementations for VAVGUB & VAVGUH. Optimize VSEL too. 2006-07-17 21:47:18 +00:00
gbeauche
07bf6fe6c1 Fix typo for ANDPS, ANDPD, ANDSS, ANDSD 2006-07-17 21:46:15 +00:00
gbeauche
a23f846bec symlink codegen_x86.h 2006-07-17 07:43:54 +00:00
gbeauche
c8a273332f Fix for 32-bit x86, was generating setcc CC,%dh instead of %dl.
i.e. force use of ecx & edx -- though it was fine in 64-bit mode, of course
2006-07-17 07:34:33 +00:00
gbeauche
e07e2196e3 Use new code generator. The gain is only 10%, bottlenecks are elsewhere.
Optimize Altivec vector splat instructions after Agner's guide.
2006-07-17 06:56:38 +00:00
gbeauche
ceb43ce19a Define global XMM registers for SIMD & FPU (64-bit mode) 2006-07-17 06:52:13 +00:00
gbeauche
4e624209d3 Add new code generator for testing purposes (i386, x86_64) -- It's to be
used for mid-level optimizations
2006-07-17 06:49:07 +00:00
gbeauche
c306dfc4fd Make VSCR an uint32, don't bother splitting it into NJ, SAT values since
the gain is almost nil and actually hurts performance in JIT mode.
2006-07-17 06:46:56 +00:00
gbeauche
cc12787047 Prepare for new code generator and mid-level optimizations. 2006-07-16 12:47:38 +00:00
gbeauche
7cfee5a2be Move processor capability information to utils-cpuinfo.[ch]hpp. Add new
utils-sentinel.hpp for helper functions to be called at program initialization
and termination.
2006-07-16 12:28:01 +00:00
gbeauche
9bc307c3fd Fix for new code generator -- FIXME: backend macros should be enabled only
in ppc-jit.cpp (e.g. define a new ENABLE_JIT_TARGET_ASM macro?)
2006-07-16 12:23:03 +00:00
gbeauche
6113436ea4 Remove obsolete code (HAVE_STATIC_DATA_EXEC). 2006-07-16 12:18:59 +00:00
gbeauche
a2e0cc10c0 forgot to commit this __op_PARAM? change 2006-07-16 12:09:40 +00:00
gbeauche
5d7ef13a9c Fix gen_op_invoke*() for 64-bit offsets on x86-64. Drop CPUPARAM since it's
now cached to a host register.
2006-07-09 15:19:32 +00:00
gbeauche
a5296875f1 Optimize alignment routine for x86 & x86_64. 2006-07-09 15:18:08 +00:00
gbeauche
d75a91497d Fix debugging of generated code to include the block chainer trampoline. 2006-07-09 15:17:15 +00:00
gbeauche
7d5898f97a Some minor optimizations: xchg (unused), movdqa in sse2 code. 2006-07-09 12:19:50 +00:00
gbeauche
abc911eaa7 Remove use of global register A0 (now aliased to T0). This makes it possible
to cache the CPU context pointer to a register and thus rendering generated
code CPU context independent. Not useful to SheepShaver, but it is for
another project for threads emulation on plain x86-32.

Note: AltiVec performance may drop a little on x86 but this will be restored
(and even improved) in the future.
2006-07-09 12:15:48 +00:00
gbeauche
d0a64733ef Use -fno-align-functions to really disable function alignment (a value of 0
used the default alignment, e.g. 16 bytes on x86_64). This is purely cosmetics
and only helps reading the resulting disassembly.
2006-07-06 00:07:47 +00:00
gbeauche
d5bd143e40 Remove obsolete vminfp & vmaxfp (too long sequences) 2006-07-06 00:04:33 +00:00
gbeauche
c677dff47a Add more micro asm optimisations to x86{,-64} (mulhw, mulhwu, slw, srw, cntlzw
and subf* series). Also now enable the optimzations on x86_64 by default.
2006-07-06 00:01:04 +00:00
gbeauche
e39e80b44b cosmetics 2006-07-04 23:27:06 +00:00
gbeauche
0123552ddc Use extra precision (e.g. long double) for fma operations though this
inhibits some underflow conditions.
2006-07-04 23:23:42 +00:00
gbeauche
98dea63921 Fix fmadd et al. to set FPSCR[VXISI] only if any of the multiply operands
is an inifinity (2.1.5 -- don't set based on the intermediate result)
2006-07-04 23:20:46 +00:00
gbeauche
e020d63591 Fix frsp FPSCR[OX] condition 2006-07-04 23:17:37 +00:00
gbeauche
78952866b4 Fix mtfsb0 & mtfsb1 (VEX's xlc_dbl_u32 + code review) 2006-07-04 10:41:48 +00:00
gbeauche
c022ff87e6 remove dead code (fdivs was never used) 2006-07-04 08:58:40 +00:00
gbeauche
9f6edc436b Fix mismerge from kpx branch 2006-07-04 08:54:53 +00:00
gbeauche
7efab4276f Improve FPU emulation accurracy. However, PPC_ENABLE_FPU_EXCEPTIONS is still
set to 0 until generated code is optimized enough (current slow down factor
is 3x vs. previous core, expectations are about 50% slower FP code).

The main benefit is exception bits are accurate. All glibc test-fenv,
test-arith{,f}, test-double, test-float pass on ppc, and mostly on x86_64
with gcc 4.0.1. Yes, this is also compiler dependent.

FIXME: find a real Mac application that depends on precise FPSCR bits... I
think I don't want to care optimizing yet until someone shows me a real world
application.
2006-07-04 07:19:18 +00:00
gbeauche
0a74d0559a Fix fnmadds & fnmsubs emulation + try to provide optimized fma routines for
better precision
2006-07-04 07:06:18 +00:00
gbeauche
dc88ee271d Use lrint() for fctiw on x86-64. This is because some glibc use AMD optimized
math library where floor(), ceil() et al. don't set the inexact flag correctly
2006-07-04 06:59:28 +00:00
gbeauche
dc3df920c5 Fix fctiw emulation (VEX's jm-ppc-test -f, handle current rounding mode) 2006-07-04 06:58:24 +00:00
gbeauche
de5389bc0e Fix vminfp & vmaxfp emulation (VEX's jm-ppc-test -a, triggered nan bugs) 2006-07-04 04:47:04 +00:00
gbeauche
39ee6ba1aa Fix vctsxs & vctuxs emulation (VEX's jm-ppc-test -a, triggered inf/nan bugs) 2006-07-04 04:37:15 +00:00
gbeauche
0a2f9d3f03 Add fsel instruction emulation (VEX's jm-ppc-test -f) 2006-07-04 04:25:02 +00:00
gbeauche
635ee55a5d Fix floating-point single precision load/store (VEX's jm-ppc-test -f) 2006-07-04 04:21:02 +00:00
gbeauche
d9eb35f026 updates 2006-05-14 20:46:19 +00:00
gbeauche
e339993b22 Updates. It's high time for a new snapshot. 2006-05-14 17:14:09 +00:00
gbeauche
c512377a12 Add 1GB item to GUI 2006-05-14 16:14:29 +00:00
gbeauche
bd6ec66354 Add missing "etherguid" prefs item for Basilisk II Ethernet support (b2ether). 2006-05-14 16:13:16 +00:00
gbeauche
3f3891ab31 Move up NATMEM_OFFSET to 0x11000000. This is arbitrarily determined to be
the base of the largest free block. Turns out SDL libraries are loaded around
0x10000000 so we have some luck here.
2006-05-14 15:58:11 +00:00
gbeauche
8a27c90e15 Temporary workaround for Windows (shndx_text is not unique...) 2006-05-14 14:12:57 +00:00
gbeauche
d26f8ad8e2 Fix for DIRECT_ADDRESSING mode (Windows) 2006-05-14 13:48:05 +00:00
gbeauche
7ef09b90bb NQD dirty boxes, BeOS backend -- no-op. 2006-05-14 08:35:35 +00:00
gbeauche
5e4c2b7bb9 NQD dirty boxes, X11 backend. 2006-05-14 08:32:33 +00:00
gbeauche
757f849ad0 Optimize generated code to NQD & CheckLoad functions. They don't call into
68k or MacOS code, so they don't need to be a termination point. i.e. don't
split into two basic blocks and thus avoid a full hash search.

Also add missing NQD_unknown_hook NativeOp from previous commit.
2006-05-14 07:21:10 +00:00
gbeauche
74a5024be4 NQD dirty boxes, generic code
+ while we are at it, also rename a few NQD related NativeOps.
2006-05-13 17:12:18 +00:00
gbeauche
484469962b Don't let SDL catch SIGINT and SIGTERM signals. This is not suitable for
SheepShaver since we are typically translating SDL_QUIT events to PowerOff()
on MacOS side. And, if MacOS is not fully booted, it's not really convenient
to shut it down, even with ctrl-C. i.e. you had to kill -9 it.
2006-05-09 19:53:31 +00:00
gbeauche
0af4721cb6 Don't read from 0xf8000090 during MacOS (8.5, 9.0) installation. Is this an
OpenFirmware check for OldWorld 604-based machines?

XXX I have code pending that makes it possible to use PowerMac ID #3035 and
model 510 (PowerMac G3 Series). However, I have a regression with one of my
MacOS 8.6 disks. This is non-standard anyway since it was installed from the
iMac DV 8.6 discs ("yellow" not generic) with MOL -- SheepShaver can't cope
with it.

So I am not surprised it breaks. Otherwise, 8.5 -> 9.0.4 were fine with it.

BTW, the "regression" is Native Resource Manager is not installed and the
boot gets mad later. FWIW, it's the same as for MacOS 9.1. A resource is
very likely not loaded.
2006-05-08 23:32:58 +00:00
gbeauche
0a37b8f5e9 Fix MacOS X GUI (new fake DarwinSys*() functions) 2006-05-08 17:20:20 +00:00
gbeauche
8bd38cff75 Also nuke MacOS X GUI binary and bundle for make clean 2006-05-08 17:19:45 +00:00
gbeauche
12195c32b5 Define UNALIGNED_PROFITABLE on x86 platforms 2006-05-07 16:54:58 +00:00
gbeauche
75f3bdea68 Fix NQD_bitblt_hook() to perform sign check correctly 2006-05-07 10:49:48 +00:00
gbeauche
bc13355b57 Add linker scripts from Basilisk II and make it possible to allocate up to
1 GB of Mac memory. Only tested on Linux/x86_64 so far but with a somewhat
interesting (MacOS, ROM, RAM size) matrix.

XXX: It should be possible to allocate up to 1.5 GB by relocating the ROM
base to something like 0x60800000.
2006-05-06 10:42:51 +00:00
gbeauche
6da4032ab7 Add a few FE0A opcode patches. This slightly improves stability. 2006-05-06 10:30:00 +00:00
gbeauche
80c87484f3 Add 'nsrd' 1 and 'gpch' 650 patches for MacOS 7.5.3 Revision 2.2 2006-05-06 09:23:28 +00:00
gbeauche
3bd5d0c787 Instructions that trap are now an end-of-block condition. This should avoid
the compilation of illegal instructions and thus stopping execution earlier.
2006-05-06 07:19:39 +00:00
gbeauche
e88961bc45 Review MacOS 8.6 vs 9.0 patches:
- 'boot' 3: set boot stack pointer only once at the correct place
- 'gpch' 750: fix FE0A opcode replacement (selector #$0a is virt2phys on pgidx)
- 'gpch' 750: remove bogus patch for SonyVars
- Mark patches "9.0" verified accordingly vs. 8.6
2006-05-05 19:05:24 +00:00
gbeauche
4578abcbd4 Add native GetNamedResource() and Get1NamedResource() patches for PPC Unix.
Only tested on MacOS X so far. It shouldn't be a problem for Linux/PowerPC.
2006-05-03 22:11:49 +00:00
gbeauche
812682fda6 update 2006-05-03 21:53:47 +00:00
gbeauche
f3ba2f0d64 Don't access ROM85 as it it was a pointer to a ROM version number (8.0, 8.1)
aka. fix bogus AppleShare extension, it was trying to dereference 0x3fff.

XXX: why is this code called in the first place?
2006-05-03 21:53:33 +00:00
gbeauche
21f35a34f0 Add patches for native GetNamedResource() and Get1NamedResource(). This will
be useful to fix a bug in the AppleShare extension (see DRVR .AFPTranslator
in Basilisk II)

Unrelated improvement: call sheepshaver_cpu::get_resource() directly, don't
get it through another global function.
2006-05-03 21:45:14 +00:00
gbeauche
0f5f874e11 Huh, committed wrong changelog for configure.ac, it should have been the
following: fix build of the CPU emulator (check for additional math functions)
2006-05-02 19:36:57 +00:00
gbeauche
8123813cad Add SLiRP support to SheepShaver for Windows 2006-05-02 19:35:39 +00:00
gbeauche
22110cb4f3 Make GetMainWindowHandle() a globally exported function as it is used e.g.
in clip_windows.cpp & video_sdl.cpp
2006-05-02 19:34:04 +00:00
gbeauche
e5051464bf Move likely() definitions to dyngen-exec.h, they are only used in the CPU
core where it's most useful (give a stronger hint to gcc4)
2006-05-02 19:33:10 +00:00
gbeauche
b9b1fd4e22 Don't build a built-in GUI with --enable-standalone-gui was requested 2006-05-02 05:50:38 +00:00
gbeauche
085253dc9b - Fix build on ppc (paranoia.cpp -- one extra STR_SIGUSR2_INSTALL_ERR left)
- Fix for GTK+ 1.2 GUI on ppc (notebook's panes redraw)
- Add run-time detection of the underlying arch for "jit" detection (MacOS X)
2006-05-01 23:01:53 +00:00
gbeauche
9b60acb2da Port --enable-standalone-gui support to SheepShaver
Others changes include:
- Factor out STR_SIG_INSTALL_ERR messages
- Process command line arguments early (prior to calling PrefsInit())
- GUI: set start_clicked only if the "Start" button was clicked
- GUI: save changes to the "Input" pane when the "Start" button was clicked
2006-05-01 22:33:34 +00:00
gbeauche
a7888c6c64 fix underquoted definitions 2006-04-06 22:36:43 +00:00
gbeauche
5678c1d37d Detect SSE3 & SSE4. 2006-04-01 22:14:33 +00:00
gbeauche
b288f6278e Helper macros to annotate likely branch directions. Colateral effect: this
also fixes build with GCC 4.1 (ppc-dyngen-ops.cpp) since the branches are
re-ordered in a way there is now only one exit-point in op_jump_next_A0().
2006-04-01 21:41:19 +00:00
gbeauche
d475faf4ba Copy constants to 32-bit addressable data pool. This fixes -pie builds on
x86_64: program resides above 32-bit barrier and JIT generated code wants
(knowingly) to access globals directly.
2006-01-28 22:03:31 +00:00
gbeauche
d9b4b31490 Merge from KPX: new exit() handling code 2006-01-28 22:00:10 +00:00
gbeauche
e0589a097e fix new/delete mismatch in slow_allocator, also use that for lazy_allocator 2006-01-28 21:59:41 +00:00
gbeauche
022d09375f Merge from KPX: new exit() handling code; make "syscall" illegal for MacOS
emulation (SheepShaver)
2006-01-28 21:57:52 +00:00
gbeauche
d4210ef902 Check whether compiler supports byte bit-fields. If so, we can enable slirp
emulation code since it pure C+sockets code.
2006-01-27 23:48:08 +00:00
gbeauche
6ddf123991 Adapt for new non-blocking I/O error message 2006-01-24 23:50:19 +00:00
gbeauche
02525acf32 Use FIONBIO only on pretty ancient systems. 2006-01-24 23:47:09 +00:00
gbeauche
f8c3b2c6bb no-stack-frame optimization for linux/i386 too since it now works there too 2006-01-22 20:07:47 +00:00
gbeauche
f2d3692c08 updates 2006-01-22 16:46:41 +00:00
gbeauche
f32e053178 Apply the no-stack-frame optimization in op_invoke_*() to MacOS X for Intel
templates. This avoids mis-aligninment of the stack, and useless reservation
of space on it for function args. Indeed, we now pre-allocate 16 stack-slots
in op_execute() for this purpose.
2006-01-22 00:12:39 +00:00
gbeauche
51a09ecc21 Don't mis-align the stack on x86 platforms (most visible on MacOS X for Intel) 2006-01-22 00:08:32 +00:00
gbeauche
1f195045a1 __DATA,__data section may be empty (MacOS X 10.4.4 for Intel) 2006-01-22 00:07:22 +00:00
gbeauche
89700e74e2 update icon with transparency 2006-01-21 18:04:03 +00:00
gbeauche
7755bd2873 rename extfs volume name to "Unix" 2006-01-21 17:26:27 +00:00
gbeauche
46ee842be3 don't trigger interrupt through deleted cpu object (XXX may need locks) 2006-01-21 17:18:53 +00:00
gbeauche
a9468a9644 fix encoding of lis r0,0x9e00 2006-01-19 22:24:09 +00:00
gbeauche
d85590c972 adapt for older MIPSpro preprocessor 2006-01-18 23:50:16 +00:00
gbeauche
357467c97b <cpu/jit/dyngen-exec.h> is necessary because it contains the definitions of
DYNGEN_FAST_DISPATCH for the direct_chaining_possible() test... [otherwise,
it was a performance regression]
2006-01-18 23:45:31 +00:00
gbeauche
73c6d2d2c0 apply the no-stack-frame optimization in op_invoke_*() to MacOS X hosts too 2006-01-18 23:06:48 +00:00
gbeauche
1313fe589b fix for MacOS X/ppc (simply for completeness, the CPU emulator is not used
natively by default)
2006-01-18 23:00:59 +00:00
gbeauche
b6600ca3fe recognize POWER5+ CPUs (e.g. p5-520) 2006-01-18 22:12:26 +00:00
gbeauche
2e7f194ff2 add generic roundf() from glibc (for IRIX/mips with older libm) 2006-01-17 23:09:18 +00:00
gbeauche
bde3eb7972 fix framework detection on OSX/intel with newer compiler that compiler that
fully obsoleted nested functions support (my fault anyway)
2006-01-15 11:41:23 +00:00
gbeauche
0a9a210c30 Disable direct block chaining if DYNGEN_FAST_DISPATCH is not defined. Note
this is a workaround prior to enabling it on mips and the future JIT.
2005-12-12 21:44:50 +00:00
gbeauche
d9fc0aa5ad Look for g++ in /usr/freeware/bin (IRIX/mips for the JIT). Avoid false
positives in GCC detection, i.e. knowingly cause a syntax error if #error
was not good enough (MIPSpro CC). Fix dyngen g++ version detection if
main compiler is not g++
2005-12-12 21:22:40 +00:00
gbeauche
c71bc8cc4c avoid unaligned memory accessed when patching the ROM (IRIX/mips) 2005-12-12 20:46:31 +00:00
gbeauche
5c287d301d remove obsolete cygwin bits and fix allocation of NanoKernel region on
IRIX (aka make it POSIX compliant)
2005-12-11 23:18:47 +00:00
gbeauche
6416914c15 fix overflows for lve[bhw]x input values and vector values on 64-bit hosts 2005-12-11 20:57:45 +00:00
gbeauche
8372abd132 arrangements for non-gcc compilers 2005-12-11 18:15:34 +00:00
gbeauche
d19908c9d9 JIT now works on IRIX/mips, you need GCC for the synthetic opcodes:
CC=cc CXX=CC ./configure --with-dgcc=g++

Also merge MIPSPro optimization flags from Basilisk II tree.

Note that I only verified the emulator works through the testsuite
(all tests passed, including AltiVec emulation)
2005-12-11 18:15:05 +00:00
gbeauche
4866e89c3a factor out and fix mips case for external function invocation as t9 shall
be set so that gp can be recomputed in the called function
2005-12-11 17:25:42 +00:00
gbeauche
92f7738f80 - Add possibility to skip a test category (ALU, FPU, VMX). This will only
generate target code without executing it, and not comparing results
- Fix aligned_vector_t, we can't rely on THIS pointer to be 16-byte aligned
- Also fix dummy_vector alignment
2005-12-11 17:21:07 +00:00