Use the clobber list instead of the stack to save rbx when executing the cpuid
instruction with inline assembly. This avoids breaking GCC assumptions about
the stack pointer location.
more specifically: if the emulator stops unexpectedly, it is quite possible that one of the shader cache files will have some bytes near the end that never got their values filled in. this change adds an index number at the end of each entry as extra verification that the entry is valid, so that invalid entries can be ignored (and eventually overwritten) instead of causing crashes.
This is arguably better then using the slot0 device for slot1, because it maps
the real hardware better (nothing can be mounted on slot1 on a Wii AFAICT).
This also makes Kirby: Return to Dreamland work properly and fixes some of the
SD card problems (libs do not expect to have the same SD card mounted two times
in RW...).
This reverts commit 9a627e89fb.
The attempted Kirby: Return to Dreamland fix does not work properly and while
it fixes this particular game, it completely breaks SD card support on Dolphin.
BTW, I've never head of /dev/sdio/slot2 before...
Also re - implement the emulation issues column that was reverted, make it a bit bigger since sentences need more words and delete the issues portion of the emustate tooltip since it is unnecessary now.
This should make it so if you try to load an incompatible save, it simply doesn't load, instead of crashing dolphin. (I can't guarantee no crash but it's much less likely now)
The "Notes" column is gone and in it's place an "Emulation Notes" column is placed (it contains the emulationissues lines from the game inis). Notes that contain useful info about the game can be seen with just a glance this way.
Fixes issue 5043.
The "dsptool" executable is not included in the bundle.
The "tester" executable is not included in the bundle and it no longer
installed on other platforms, since it is neither expected nor useful
to install unit tests.
The code from 748be364e5 incorrectly accepted -0x100000000 on x86_64.
Also if ERANGE is returned by strtoul(), reject the parsed value regardless
of what that value is. This fixes invalid values being returned when compiling
with Visual C++. Thanks to "cotton" for testing this.