Commit Graph

1139 Commits

Author SHA1 Message Date
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
gbeauche
37ee682c0f fix for mipspro compilers 2005-12-11 17:15:12 +00:00
gbeauche
63d4506a4d add "fast" pointers to non-virtual member functions for MIPSpro compilers 2005-12-11 17:12:59 +00:00
gbeauche
dd2b9a95d5 Align PowerPC registers struct manually, i.e. don't depend on non-portable
compiler extensions (e.g. GCC __attribute__((aligned(N)))).
2005-12-06 22:25:13 +00:00
gbeauche
d8aa8a7459 Port JIT to IRIX/mips (initial code from QEMU) 2005-12-05 22:24:13 +00:00
gbeauche
1670c6e84d ahem, forget this extra difference between multiarch & jit dispatcher 2005-12-05 22:10:46 +00:00
gbeauche
ecc90b0916 Better mechanism to dispatch arch-dependent JIT headers as we can't use
raw arch names (e.g. mips expands to 1, thus not finding the header)
2005-12-05 20:37:46 +00:00
gbeauche
d3e8f634b2 Fix build of test-powerpc on non-{x86,ppc} platforms 2005-12-04 17:46:52 +00:00
gbeauche
45cb124844 We really need a way to specify a member alignment for AltiVec emulation
testing. Extra fixlets for IRIX/mips and other CPU emulator in non-JIT mode
2005-12-04 17:45:41 +00:00
gbeauche
8c12552fda GCC fixes for IRIX/mips (unsupported __generic intrinsic and probably not
using the fixincludes-patched internal/math_core.h file)
2005-12-04 17:44:21 +00:00
gbeauche
41ab82edce Better IRIX support: add audio & slirp networking. Fix configure to use -lm
when searching for C99 functions (roundf() et al.).
2005-12-04 16:26:57 +00:00
gbeauche
f75d445700 Some compilers don't permit the use of C99 extensions from C++. This is the
case for MIPSPro (IRIX) for fegetround(), isinf() et al., though they are
available in the math library.
2005-12-04 16:10:01 +00:00
gbeauche
28ed73f212 Fix build in pure interpreter mode (IRIX/mips) 2005-12-04 16:07:52 +00:00
gbeauche
7a24d4c8b6 Use #pragma pack() on IRIX and enforce a means to pack structs 2005-12-04 15:58:52 +00:00
gbeauche
b17b4d7584 dos2unix 2005-12-04 15:53:55 +00:00
gbeauche
dfb7f52abd The JIT works in Darwin/x86 too. 2005-11-30 21:42:22 +00:00
gbeauche
954643b582 Modernize tarball VERNAME 2005-11-30 07:25:37 +00:00
gbeauche
e2391d5753 Always use the complete non-stubs Ethernet driver (XXX probably do that
only in Emulated PPC mode for performance reasons?)
2005-11-30 07:24:53 +00:00
gbeauche
09c61e2354 Makefile fixes. Also checkout Basilisk II tree while preparing the
SheepShaver sources tree as it's better to have the tarball having
the B2 sources inside too.
2005-11-30 00:29:29 +00:00
gbeauche
34b8843a1c Remaining references to V2.2 changed (XXX needs to be factored out) 2005-11-30 00:02:25 +00:00
gbeauche
f8fd76ba35 Copyright and URL changes 2005-11-29 23:59:36 +00:00
gbeauche
4cda58b38a NEWS improvements 2005-11-29 23:55:05 +00:00
gbeauche
bc463966c8 V2.3-Pre (snapshot) 2005-11-29 23:48:18 +00:00
gbeauche
6fb46cd1c3 Move to V2.3 (snapshot) versioning since V2.2 was already CVS-released 4
years ago. Add missing changes.
2005-11-29 23:46:43 +00:00
gbeauche
42d6693435 Support "b2ether" devices (from Basilisk II tree) 2005-11-29 23:01:09 +00:00
gbeauche
4ddc2368d1 add "CD-ROM Drive" label 2005-11-29 20:55:33 +00:00
gbeauche
71d0871858 aha, I forgot a hunk 2005-11-27 23:59:07 +00:00
gbeauche
5a5defb9d8 Build Windows GUI with GTK 2005-11-27 23:54:26 +00:00
gbeauche
37da272071 Ethernet and Serial support (merge from Basilisk II tree) 2005-11-27 22:29:32 +00:00
gbeauche
13e7e02786 Force DIB driver for SDL/Windows (HACK from Basilisk II tree), improves
responsiveness for me.
2005-11-27 20:40:52 +00:00
gbeauche
bc550cd3cd Windows fixes for "new" Ethernet API. The full driver is needed because of
DIRECT_ADDRESSING mode.
2005-11-27 20:36:30 +00:00
gbeauche
cd568e8bd3 fix for new ethernet API 2005-11-27 20:22:19 +00:00
gbeauche
90670c2652 warning fixes, aka don't redefine log2() et al. if already defined (Win32) 2005-11-27 20:20:25 +00:00
gbeauche
c1c4345594 fix regression introduced from JIT/Mach support 2005-11-27 20:14:22 +00:00
gbeauche
49143b5e81 fix ether_dummy.cpp build 2005-11-27 20:09:59 +00:00
gbeauche
d27fdd7afb cleanupsCVS: ---------------------------------------------------------------------- 2005-11-27 20:02:06 +00:00
gbeauche
9ec35ab23e Do use predecode cache in case the JIT is disabled by the user ("jit" option) 2005-11-27 16:20:17 +00:00
gbeauche
b5562ede18 GUI cosmetics from Basilisk II, add missing "slirp" ethernet option 2005-11-27 16:01:59 +00:00
gbeauche
dcc027791c "Keyboard/Mouse" is the more logical way 2005-11-27 15:03:01 +00:00
cebix
b8a4568cae modernized Linux sound device selection (synced to B2) 2005-11-24 17:26:00 +00:00
gbeauche
5f7021a179 don't grab in -mdynamic-no-pic when using icc, note that you need at least
version 9.0.25 (build 20050809) to have a working binary
2005-08-18 22:32:31 +00:00
gbeauche
a0c918ae5d ahem, fix typo :) 2005-07-25 20:03:07 +00:00
gbeauche
81ba8f90d0 force -finline-functions to get inlining really operating with gcc < 3.3.6
on x86 or you may get a _ZN9bit_fieldILi0ELi0EE7extractEj undefined symbol
2005-07-25 19:46:24 +00:00
gbeauche
74e4b16079 fix for gcc < 3.3.6 on x86 2005-07-25 19:45:26 +00:00
gbeauche
2b72c5e047 Fix for broken MacOS X headers (at least in 10.2) when compiling with the
CPU emulator.
2005-07-14 18:09:30 +00:00
gbeauche
d8dc5827d3 Initial JIT support for Darwin/x86. Seems there is still a problem though. 2005-07-11 07:06:31 +00:00
gbeauche
d08df6e659 Darwin/x86 fixes 2005-07-11 06:52:51 +00:00
gbeauche
ff28c42565 Check for CoreFoundation framework, which is not available in Darwin. 2005-07-10 15:43:33 +00:00
gbeauche
6eacaf2e82 Fix asm clobbers for newer gcc 4.0.1, don't use -msse to enable xmm clobbers
(likewise for -mmmx vs. mmx registers). Instead, since GCC won't generate
MMX/SSE code without explicit intrinsics use of vectorization, we know
those register won't be clobbered outside of the __asm__ code. So, it's safe
as is (we could also remove all sse/mmx clobbers).
2005-07-09 21:53:26 +00:00
gbeauche
4cb11c7c9f Fix detection of GCC versions, avoid AC_EGREP_CPP (J.P. Larocque) 2005-07-06 05:26:01 +00:00
gbeauche
896cdc1fb7 Add upcoming 7448 and new PPC970FX CPU ids. 2005-07-06 05:11:56 +00:00
gbeauche
4d97079af9 Map latest 7447A CPU to a plain G4 (7400) 2005-07-06 04:58:34 +00:00
gbeauche
2975867e09 forgot to commit a hunk 2005-07-04 17:46:31 +00:00
gbeauche
284bda9357 updates for next snapshot 2005-07-04 11:38:17 +00:00
gbeauche
0f358518df New paranoia checks that better match was SheepShaver is doing with threads
and sigaltstack(). At least, this time we force use of threads and also
alter r1 to see whether the current threading model relies on it or not.
2005-07-04 06:09:59 +00:00
gbeauche
29207d9cf2 Move sigregs handling to dedicated header 2005-07-04 05:34:33 +00:00
gbeauche
d80a943daf Don't use sem_t definition from our local "semaphore.h" layer. Copy the
definitions from original LinuxThreads.
2005-07-03 23:28:30 +00:00
gbeauche
811b8d6648 Bad MacOS X, we need our our semaphore.h from Basilisk II to get POSIX
unnamed semaphores emulation with named Mach semaphores.
2005-07-03 22:44:30 +00:00
gbeauche
97eaae096c Fix typo for AO_transmit_packet() thunk. 2005-07-03 22:43:11 +00:00
gbeauche
e259aeb504 Tweaks to build slirp on MacOS X. Yeah, there is now ethernet there! ;-) 2005-07-03 22:42:48 +00:00
gbeauche
f346839f86 Add the complete NDRV variant for DIRECT_ADDRESSING modes. We could use
this one for all cases but I'd prefer keep it that way. i.e. the old
driver in REAL_ADDRESSING mode (with the D(bug()) facility), and the new
NDRV for DIRECT_ADDRESSING mode (e.g. Windows).
2005-07-03 22:04:18 +00:00
gbeauche
97726bd1e7 Minor tweaks to support compilation of ether.cpp within MacOS. i.e. mostly
migrate the Ethernet driver to the MacOS side. This is enabled for
DIRECT_ADDRESSING cases. I didn't want to alter much of ether.cpp (as it
would have required to support that mode). Of course, in REAL_ADDRESSING
mode (the default) and for debugging purposes, the old driver is still
available.
2005-07-03 22:02:01 +00:00
gbeauche
9c16ab1514 Remove obsolete and broken Cygwin/X11 hacks. Forbid builds of the Windows
version from within the Unix/ directory.
2005-07-03 13:39:06 +00:00
gbeauche
b7004b1199 Add necessary configury + support code to support slirp in SheepShaver,
the user-space network emulation layer. Enable it on all Unix supported
platforms where I know it works.
2005-07-03 13:05:36 +00:00
gbeauche
2cf7fd2a88 First round of patches to increase ethernet code portability. 2005-07-03 08:23:42 +00:00
gbeauche
029d86ce4c Fix build with CodeWarrior in MacOS (9 under SheepShaver ;-) 2005-07-02 22:54:07 +00:00
gbeauche
7cc1bbc7b8 Issue a SysError(dsOldSystem) if we are trying to use MacOS < 8.1.0 with a
NewWorld ROM. That may be 8.1.0 included but original iMac had a NewWorld
ROM compatible system.

Otherwise we will crash because the boot routine is trying to execute code
through unitialized descriptor that points to 0x13ff, which is obviously
wrong (and unaligned on word-boundaries for 68k code).
2005-07-02 17:51:43 +00:00
gbeauche
2881c20813 Hopefully fix the remaining issue in the High Resolution Timing support
code and re-enable it on Linux platforms (they have clock_nanosleep). Why
did I trigger an interrupt inside a held lock? Hmmm, we should probably
add an _ack semaphore like we do e.g. for ethernet.
2005-07-01 23:15:11 +00:00
gbeauche
245c691102 Check for <stdint.h> ourselves + build with -mdynamic-no-pic on MacOS X. 2005-07-01 06:16:00 +00:00
gbeauche
f1ef1322b3 Add B2 Unix/m4 symlink 2005-07-01 06:15:21 +00:00
gbeauche
a60b0fb78c Restore clobbered registers before calling SDL_PumpEvents(). 2005-06-30 22:26:12 +00:00
gbeauche
df960a814e HFS+ is case insensitive (sic!). At least, it pointed out to not remove
ppc_asm.s file but rather the temporary ppc_asm.out.s variant.
2005-06-30 22:19:01 +00:00
gbeauche
ec8661f431 Fix a damn silly bug. On some occasions, we could have spcflags() set to
EXEC_RETURN | HANDLE_INTERRUPT. And then, we handled the interrupt, but
EXEC_RETURN was set so we returned very quickly without completing the
interrupt routine. As a side effect, this occasionnaly hung the emulator
most likely with {ethernet,audio}-based applications that trigger a lot
of interrupts.

The fix is to always honour EXEC_RETURN flag at first, of course.
2005-06-30 15:29:11 +00:00
gbeauche
fd69df24f3 Re-enable spinlocks on {i386,x86_64} since they are now used only for really
small atomic operations (add/sub). This implementation should be enough for
that purpose.
2005-06-30 13:29:43 +00:00
gbeauche
08c5f8b713 Improve idle wait mechanism. Now, the emulator thread can be suspended
(idle_wait) until events arrived and notified through TriggerInterrupt().
i.e. we no longer sleep a fixed amount of time on platforms that support
a thread wait/signal mechanism.
2005-06-30 10:17:58 +00:00
gbeauche
c9b044aeaf Completely avoid any form of nested interrupt processing. 2005-06-30 09:09:59 +00:00
gbeauche
55f5e3a41b Fix CR save/restore in EmulOp thunk. I don't know what it fixes for real
but that was definitely wrong to only preserve CR2 there.
2005-06-30 07:34:17 +00:00
gbeauche
ea42af0568 Consume the packet even if we could not allocate a message block for it in
the Ethernet interrupt. The BeOS version does that, likewise for MOL. Otherwise,
we end up into an infinite loop reporting the memory allocation failure.

I think this is now the expected behavior as we wouldn't have stats
(num_rx_no_mem) for it if we couldn't get out of the EtherIRQ. ;-) Besides,
the packet will be resent for reliable networks.
2005-06-30 06:38:09 +00:00
gbeauche
7ac6ad2f46 Clean-ups: comments, ticks per sec output, don't restore r13 twice. 2005-06-28 16:50:30 +00:00
gbeauche
38d03d02e9 The alternate stack trick never worked as you can't modify an active stack.
i.e. it returned EPERM and ran into stack corruption to eventually crash the
emulator. This is noticeable in !hw_mac_cursor_accl mode (e.g. fullscreen DGA).

In order to the sigalstack() to be effective, we must kludge the kernel to
think it's running on another stack. In practise, we provide another stack
for the SIGUSR2 handler. sigusr2_handler_init() fulfills that purpose.

I hope this fixes remaining issues forever. At some point, I had multiple
*_init() handlers in case this is necessary.
2005-06-28 16:47:32 +00:00
gbeauche
a8ba24aecf Use fast spinlocks only for small enough atomic operations. Otherwise, you
run into some performance problems in e.g. video graphics experience because
of busywaits in the current spin_lock() implementation.
2005-06-25 11:40:29 +00:00
gbeauche
198925c5ae clean-ups from previous experiment with sched_yield(), this one caused a
slow-down too.
2005-06-25 11:36:35 +00:00