emaculation / macemu

Basilisk II and SheepShaver Macintosh emulators, maintained
74 stars 14 forks source link

Add x86_64 32-bit address mode prefix to ix86_skip_instruction #144

Closed rakslice closed 3 years ago

rakslice commented 3 years ago

In the sigsegv instruction skipping for x86_64, skip the 0x67 32-bit address mode "legacy prefix" (see https://wiki.osdev.org/X86-64_Instruction_Encoding#Legacy_Prefixes)

Fixes #143

SegHaxx commented 3 years ago

Awesome, with this patch I can boot a Mac OS 8.6 CD to the desktop, with direct addressing mode and JIT disabled, and no having to disable security. JIT results in a PPC backtrace.

Merging this and #142 should give us a working default build on current Linux x86_64 systems with no fiddling.

ianfixes commented 3 years ago

Is there a way that we could write unit tests (for the process you described in #142) to verify these launches as part of CI?

SegHaxx commented 3 years ago

I was going to say, if people want to make CI really useful, implement an automated test that fires up a real Mac OS disk and confirm it boots. :)

ianfixes commented 3 years ago

Is that something that can be done in the shell or is that a UI-focused activity? (or something entirely new that needs to be coded up)?

SegHaxx commented 3 years ago

Getting off topic but you could, for example rig up a test harness that fires up an emulator, hashes the video memory every few seconds, and signals a pass when it matches a properly booted desktop. :)

If you want to be real fancy, have your reference MacOS disk image auto start a full hardware test suite and confirm it ran properly. like say https://macintoshgarden.org/apps/snooper-20

rakslice commented 3 years ago

Merging this and #142 should give us a working default build on current Linux x86_64 systems with no fiddling.

Well, just the fiddling of having to turn JIT off so it doesn't crash.

SegHaxx commented 3 years ago

That's a fiddle that doesn't need sudo. :)

For whats its worth, don't know if it was broke before but I saw the fix for Basilisk II, JIT seems to work just fine on BII on x86_64 with this patch so no worries there. Speedometer 4 benchmarks it at around 100x faster than a Quadra 605.

ianfixes commented 3 years ago

you could, for example rig up a test harness

Let's open a separate issue for this exact thing. I think there are enough bells and whistles in GitHub Actions for me to pull this off, I just need guidance on how one would do that on a local machine.

In the meantime, am I hearing that this is tested & ready for merge?

rakslice commented 3 years ago

Yeah, I meant: turn off the JIT in SheepShaver so it doesn't crash. The generated stuff I was referring to is from the dyngen, is only used for the JIT for PowerPC, and so doesn't apply to BII. Sorry for the ambiguity.

As far as the change in this pull request goes, the one we are talking in the comments of, yes it is tested and ready to merge.

ianfixes commented 3 years ago

Added #146 to track the emulator idea