CD-ROM: Re-enable CRC checking and disable the usage of the ARM CRC32 instruction.

This commit is contained in:
OBattler
2025-08-06 16:07:38 +02:00
parent ddde4af9ce
commit 9a25de86b3
2 changed files with 10 additions and 6 deletions

View File

@@ -345,7 +345,6 @@ cdrom_is_sector_good(cdrom_t *dev, const uint8_t *b, const uint8_t mode2, const
int ret = 1;
if (!mode2 || (form != 1)) {
#ifdef TEMPORARILY_DISABLE_CRC_CHECKING
if (mode2 && (form == 1)) {
const uint32_t crc = cdrom_crc32(0xffffffff, &(b[16]), 2056) ^ 0xffffffff;
@@ -355,7 +354,6 @@ cdrom_is_sector_good(cdrom_t *dev, const uint8_t *b, const uint8_t mode2, const
ret = ret && (crc == (*(uint32_t *) &(b[2064])));
}
#endif
cdrom_generate_ecc_data(dev, &(b[12]), mode2 && (form == 1));

View File

@@ -103,17 +103,23 @@
# endif
#endif
/*
#ifdef this out because that code path does not currently produce the
correct results.
*/
#ifdef USE_ARMCRC32
/* If available, use the ARM processor CRC32 instruction. */
#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
# define ARMCRC32
#endif
#endif
#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
/*
Swap the bytes in a word_t to convert between little and big endian. Any
self-respecting compiler will optimize this to a single machine byte-swap
instruction, if one is available. This assumes that word_t is either 32 bits
or 64 bits.
Swap the bytes in a word_t to convert between little and big endian. Any
self-respecting compiler will optimize this to a single machine byte-swap
instruction, if one is available. This assumes that word_t is either 32 bits
or 64 bits.
*/
static word_t byte_swap(word_t word) {
# if W == 8