aboutsummaryrefslogtreecommitdiffstats
path: root/emulators
diff options
context:
space:
mode:
Diffstat (limited to 'emulators')
-rw-r--r--emulators/wine-devel/Makefile4
-rw-r--r--emulators/wine-devel/files/patch-dlls::ntdll::cdrom.c56
-rw-r--r--emulators/wine/Makefile4
-rw-r--r--emulators/wine/files/patch-dlls::ntdll::cdrom.c56
4 files changed, 112 insertions, 8 deletions
diff --git a/emulators/wine-devel/Makefile b/emulators/wine-devel/Makefile
index 1316ffd26f9d..99c6bea648ed 100644
--- a/emulators/wine-devel/Makefile
+++ b/emulators/wine-devel/Makefile
@@ -36,10 +36,6 @@ USE_REINPLACE= yes
BROKEN= "Not supported on systems prior to FreeBSD 4.x"
.endif
-.if ${OSVERSION} >= 501106
-BROKEN= "Broken by new ATA driver"
-.endif
-
.if defined(DEBUG)
STRIP=
.else
diff --git a/emulators/wine-devel/files/patch-dlls::ntdll::cdrom.c b/emulators/wine-devel/files/patch-dlls::ntdll::cdrom.c
new file mode 100644
index 000000000000..cf161e0b4485
--- /dev/null
+++ b/emulators/wine-devel/files/patch-dlls::ntdll::cdrom.c
@@ -0,0 +1,56 @@
+Index: dlls/ntdll/cdrom.c
+===================================================================
+RCS file: /home/wine/wine/dlls/ntdll/cdrom.c,v
+retrieving revision 1.38
+diff -u -3 -p -r1.38 cdrom.c
+--- cdrom.c 8 Oct 2003 02:59:22 -0000 1.38
++++ cdrom.c 31 Oct 2003 14:24:08 -0000
+@@ -1350,10 +1350,8 @@ static NTSTATUS CDROM_RawRead(int dev, c
+ return ret;
+ }
+ }
+-#elif defined(__FreeBSD__)
++#else
+ {
+- struct ioc_read_audio ira;
+-
+ switch (raw->TrackMode)
+ {
+ case YellowMode2:
+@@ -1363,33 +1361,12 @@ static NTSTATUS CDROM_RawRead(int dev, c
+ FIXME("XAForm2: NIY\n");
+ return ret;
+ case CDDA:
+- /* 2048 = 2 ** 11 */
+- if (raw->DiskOffset.s.HighPart & ~2047) FIXME("Unsupported value\n");
+- ira.address.lba = ((raw->DiskOffset.s.LowPart >> 11) |
+- raw->DiskOffset.s.HighPart << (32 - 11)) - 1;
+- ira.address_format = CD_LBA_FORMAT;
+- ira.nframes = raw->SectorCount;
+- ira.buffer = buffer;
+- io = ioctl(cdrom_cache[dev].fd, CDIOCREADAUDIO, &ira);
+- break;
+- }
+- }
+-#elif defined(__NetBSD__)
+- {
+- switch (raw->TrackMode)
+- {
+- case YellowMode2:
+- FIXME("YellowMode2: NIY\n");
+- return ret;
+- case XAForm2:
+- FIXME("XAForm2: NIY\n");
++ FIXME("CDDA: NIY\n");
+ return ret;
+- case CDDA:
+- FIXME("CDDA: NIY\n");
+- return ret;
+- }
++ }
+ }
+ #endif
++
+ *sz = sectSize * raw->SectorCount;
+ ret = CDROM_GetStatusCode(io);
+ return ret;
diff --git a/emulators/wine/Makefile b/emulators/wine/Makefile
index 1316ffd26f9d..99c6bea648ed 100644
--- a/emulators/wine/Makefile
+++ b/emulators/wine/Makefile
@@ -36,10 +36,6 @@ USE_REINPLACE= yes
BROKEN= "Not supported on systems prior to FreeBSD 4.x"
.endif
-.if ${OSVERSION} >= 501106
-BROKEN= "Broken by new ATA driver"
-.endif
-
.if defined(DEBUG)
STRIP=
.else
diff --git a/emulators/wine/files/patch-dlls::ntdll::cdrom.c b/emulators/wine/files/patch-dlls::ntdll::cdrom.c
new file mode 100644
index 000000000000..cf161e0b4485
--- /dev/null
+++ b/emulators/wine/files/patch-dlls::ntdll::cdrom.c
@@ -0,0 +1,56 @@
+Index: dlls/ntdll/cdrom.c
+===================================================================
+RCS file: /home/wine/wine/dlls/ntdll/cdrom.c,v
+retrieving revision 1.38
+diff -u -3 -p -r1.38 cdrom.c
+--- cdrom.c 8 Oct 2003 02:59:22 -0000 1.38
++++ cdrom.c 31 Oct 2003 14:24:08 -0000
+@@ -1350,10 +1350,8 @@ static NTSTATUS CDROM_RawRead(int dev, c
+ return ret;
+ }
+ }
+-#elif defined(__FreeBSD__)
++#else
+ {
+- struct ioc_read_audio ira;
+-
+ switch (raw->TrackMode)
+ {
+ case YellowMode2:
+@@ -1363,33 +1361,12 @@ static NTSTATUS CDROM_RawRead(int dev, c
+ FIXME("XAForm2: NIY\n");
+ return ret;
+ case CDDA:
+- /* 2048 = 2 ** 11 */
+- if (raw->DiskOffset.s.HighPart & ~2047) FIXME("Unsupported value\n");
+- ira.address.lba = ((raw->DiskOffset.s.LowPart >> 11) |
+- raw->DiskOffset.s.HighPart << (32 - 11)) - 1;
+- ira.address_format = CD_LBA_FORMAT;
+- ira.nframes = raw->SectorCount;
+- ira.buffer = buffer;
+- io = ioctl(cdrom_cache[dev].fd, CDIOCREADAUDIO, &ira);
+- break;
+- }
+- }
+-#elif defined(__NetBSD__)
+- {
+- switch (raw->TrackMode)
+- {
+- case YellowMode2:
+- FIXME("YellowMode2: NIY\n");
+- return ret;
+- case XAForm2:
+- FIXME("XAForm2: NIY\n");
++ FIXME("CDDA: NIY\n");
+ return ret;
+- case CDDA:
+- FIXME("CDDA: NIY\n");
+- return ret;
+- }
++ }
+ }
+ #endif
++
+ *sz = sectSize * raw->SectorCount;
+ ret = CDROM_GetStatusCode(io);
+ return ret;