https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f7d825e62034dee120a24e...
commit f7d825e62034dee120a24e238e5e3c1d8dce2ff9 Author: Dmitry Borisov di.sean@protonmail.com AuthorDate: Thu May 13 02:17:27 2021 +0600 Commit: Stanislav Motylkov x86corez@gmail.com CommitDate: Tue May 18 19:30:29 2021 +0300
[PC98VID] Fix MSVC 2015 build for PC-98 target
Addendum to 3adf45086743d5f075e4270af7af64017eb01d63
Also isolate the constant structures into page section and restore the previous sections for start IO and entrypoint routines. --- win32ss/drivers/miniport/pc98vid/ioctl.c | 1 + win32ss/drivers/miniport/pc98vid/pc98vid.c | 17 ++++++++++++++--- win32ss/drivers/miniport/pc98vid/pc98vid.h | 10 ++++++++++ 3 files changed, 25 insertions(+), 3 deletions(-)
diff --git a/win32ss/drivers/miniport/pc98vid/ioctl.c b/win32ss/drivers/miniport/pc98vid/ioctl.c index 918beb117d6..d89a17510cd 100644 --- a/win32ss/drivers/miniport/pc98vid/ioctl.c +++ b/win32ss/drivers/miniport/pc98vid/ioctl.c @@ -206,6 +206,7 @@ Pc98VidGetChildState( return NO_ERROR; }
+CODE_SEG("PAGE") BOOLEAN NTAPI Pc98VidStartIO( diff --git a/win32ss/drivers/miniport/pc98vid/pc98vid.c b/win32ss/drivers/miniport/pc98vid/pc98vid.c index 8705aee35ea..4fe45f7bc54 100644 --- a/win32ss/drivers/miniport/pc98vid/pc98vid.c +++ b/win32ss/drivers/miniport/pc98vid/pc98vid.c @@ -11,6 +11,7 @@
/* GLOBALS ********************************************************************/
+DATA_SEG("PAGECONS") const VIDEOMODE VideoModes[] = { {640, 480, GRAPH_HF_31KHZ, GDC2_CLOCK1_5MHZ, GDC2_CLOCK2_5MHZ, @@ -18,7 +19,8 @@ const VIDEOMODE VideoModes[] = {0, 80, 12, 2, 4, 4, 6, 480, 37}, {0, 80, 12, 2, 4, 132, 6, 480, 37}} };
-static VIDEO_ACCESS_RANGE LegacyRangeList[] = +DATA_SEG("PAGECONS") +const VIDEO_ACCESS_RANGE LegacyRangeList[] = { { {{0x60, 0}}, 0x00000001, 1, 1, 1, 0 }, { {{0x62, 0}}, 0x00000001, 1, 1, 1, 0 }, @@ -72,7 +74,7 @@ Pc98VidFindAdapter(
Status = VideoPortVerifyAccessRanges(DeviceExtension, RTL_NUMBER_OF(LegacyRangeList), - LegacyRangeList); + (PVIDEO_ACCESS_RANGE)LegacyRangeList); if (Status != NO_ERROR) { VideoDebugPrint((Error, "%s() Resource conflict was found\n", __FUNCTION__)); @@ -193,6 +195,15 @@ Pc98VidGetVideoChildDescriptor( return ERROR_NO_MORE_DEVICES; }
+#if defined(_MSC_VER) +/* + * Avoid C2983 error for MSVC 2015. There is no such thing + * as DRIVER_INITIALIZE for video miniport drivers. + */ +#pragma alloc_text(INIT, DriverEntry) +#else +CODE_SEG("INIT") +#endif ULONG NTAPI DriverEntry( @@ -227,7 +238,7 @@ DriverEntry( InitData.HwGetVideoChildDescriptor = Pc98VidGetVideoChildDescriptor; }
- InitData.HwLegacyResourceList = LegacyRangeList; + InitData.HwLegacyResourceList = (PVIDEO_ACCESS_RANGE)LegacyRangeList; InitData.HwLegacyResourceCount = RTL_NUMBER_OF(LegacyRangeList);
InitData.AdapterInterfaceType = Isa; diff --git a/win32ss/drivers/miniport/pc98vid/pc98vid.h b/win32ss/drivers/miniport/pc98vid/pc98vid.h index 75cb4402c26..7cb9b15ef44 100644 --- a/win32ss/drivers/miniport/pc98vid/pc98vid.h +++ b/win32ss/drivers/miniport/pc98vid/pc98vid.h @@ -22,6 +22,10 @@ #define READ_PORT_UCHAR(p) VideoPortReadPortUchar(p) #include <drivers/pc98/video.h>
+#if defined(_MSC_VER) +#pragma section("PAGECONS", read) +#endif + #define MONITOR_HW_ID 0x1033FACE /* Dummy */
typedef struct _VIDEOMODE @@ -54,23 +58,27 @@ NTAPI HasPegcController( _In_ PHW_DEVICE_EXTENSION DeviceExtension);
+CODE_SEG("PAGE") BOOLEAN NTAPI Pc98VidStartIO( _In_ PVOID HwDeviceExtension, _Inout_ PVIDEO_REQUEST_PACKET RequestPacket);
+CODE_SEG("PAGE") VP_STATUS FASTCALL Pc98VidSetCurrentMode( _In_ PHW_DEVICE_EXTENSION DeviceExtension, _In_ PVIDEO_MODE RequestedMode);
+CODE_SEG("PAGE") VP_STATUS FASTCALL Pc98VidSetColorRegisters( _In_ PVIDEO_CLUT ColorLookUpTable);
+CODE_SEG("PAGE") VP_STATUS NTAPI Pc98VidGetPowerState( @@ -78,6 +86,7 @@ Pc98VidGetPowerState( _In_ ULONG HwId, _In_ PVIDEO_POWER_MANAGEMENT VideoPowerControl);
+CODE_SEG("PAGE") VP_STATUS NTAPI Pc98VidSetPowerState( @@ -85,6 +94,7 @@ Pc98VidSetPowerState( _In_ ULONG HwId, _In_ PVIDEO_POWER_MANAGEMENT VideoPowerControl);
+DATA_SEG("PAGECONS") extern const VIDEOMODE VideoModes[];
#endif /* _PC98VID_PCH_ */