diff --git a/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch b/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch index c2d8e61c..74863000 100644 --- a/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch +++ b/patches/krnl386.exe16-GDT_LDT_Emulation/0001-krnl386.exe16-Emulate-GDT-and-LDT-access.patch @@ -1,14 +1,14 @@ -From 8965b20d2366ba5e6aea5606952732c53de474f8 Mon Sep 17 00:00:00 2001 +From 956a8db76088ebaa82e0093ab0e62ed1ed2aa69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20M=C3=BCller?= Date: Sat, 27 Feb 2016 00:04:10 +0100 Subject: [PATCH] krnl386.exe16: Emulate GDT and LDT access. --- - dlls/krnl386.exe16/instr.c | 65 ++++++++++++++++++++++++++++++++------ - 1 file changed, 56 insertions(+), 9 deletions(-) + dlls/krnl386.exe16/instr.c | 57 +++++++++++++++++++++++++++++++++----- + 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/dlls/krnl386.exe16/instr.c b/dlls/krnl386.exe16/instr.c -index dc577f702d9..05158d0de28 100644 +index 6af3ca30d59..bc05db6a719 100644 --- a/dlls/krnl386.exe16/instr.c +++ b/dlls/krnl386.exe16/instr.c @@ -60,7 +60,8 @@ static inline void *get_stack( CONTEXT *context ) @@ -21,7 +21,7 @@ index dc577f702d9..05158d0de28 100644 { WORD limit; BYTE *base; -@@ -68,19 +69,41 @@ struct idtr +@@ -68,12 +69,30 @@ struct idtr #pragma pack(pop) static LDT_ENTRY idt[256]; @@ -32,43 +32,30 @@ index dc577f702d9..05158d0de28 100644 +static BOOL emulate_idtr( BYTE *data, unsigned int data_size, unsigned int *offset ) { - struct idtr ret; - #ifdef __i386__ + struct dtr ret; __asm__( "sidtl %0" : "=m" (ret) ); +- return ret; + *offset = data - ret.base; + return (*offset <= ret.limit + 1 - data_size); -+#else -+ return FALSE; -+#endif +} + +static BOOL emulate_gdtr( BYTE *data, unsigned int data_size, unsigned int *offset ) +{ -+#ifdef __i386__ + struct dtr ret; + __asm__( "sgdtl %0" : "=m" (ret) ); + *offset = data - ret.base; + return (*offset <= ret.limit + 1 - data_size); - #else -- ret.base = (BYTE *)idt; -- ret.limit = sizeof(idt) - 1; -+ return FALSE; - #endif -- return ret; - } - ++} ++ +static inline WORD get_ldt(void) +{ + WORD seg = 1; -+#ifdef __i386__ + __asm__( "sldt %0" : "=m" (seg) ); -+#endif + return seg; -+} + } - /*********************************************************************** - * INSTR_ReplaceSelector -@@ -705,10 +728,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) + +@@ -700,10 +719,9 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) BYTE *data = INSTR_GetOperandAddr(context, instr + 1, long_addr, segprefix, &len); unsigned int data_size = (*instr == 0x8b) ? (long_op ? 4 : 2) : 1; @@ -81,7 +68,7 @@ index dc577f702d9..05158d0de28 100644 { idt[1].LimitLow = 0x100; /* FIXME */ idt[2].LimitLow = 0x11E; /* FIXME */ -@@ -722,6 +744,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) +@@ -717,6 +735,31 @@ DWORD __wine_emulate_instruction( EXCEPTION_RECORD *rec, CONTEXT *context ) context->Eip += prefixlen + len + 1; return ExceptionContinueExecution; } diff --git a/patches/mf_http_support/0002-mf-tests-Add-network-bytestream-tests.patch b/patches/mf_http_support/0002-mf-tests-Add-network-bytestream-tests.patch index 80711951..495e94ff 100644 --- a/patches/mf_http_support/0002-mf-tests-Add-network-bytestream-tests.patch +++ b/patches/mf_http_support/0002-mf-tests-Add-network-bytestream-tests.patch @@ -1,4 +1,4 @@ -From e27b26f100bedf8f8374333ce9026fd96ed9102b Mon Sep 17 00:00:00 2001 +From d529517d43a4747ab61dde9c6eff4a14a261d678 Mon Sep 17 00:00:00 2001 From: Torge Matthies Date: Fri, 25 Oct 2024 10:47:30 +0200 Subject: [PATCH] mf/tests: Add network bytestream tests. @@ -8,10 +8,10 @@ Subject: [PATCH] mf/tests: Add network bytestream tests. 1 file changed, 347 insertions(+) diff --git a/dlls/mf/tests/mf.c b/dlls/mf/tests/mf.c -index 1070e9c1b2d..9d41b05fad3 100644 +index a02f2859f91..db58a55d145 100644 --- a/dlls/mf/tests/mf.c +++ b/dlls/mf/tests/mf.c -@@ -4908,6 +4908,7 @@ static void test_evr(void) +@@ -5190,6 +5190,7 @@ static void test_evr(void) hr = IMFActivate_ActivateObject(activate, &IID_IMFMediaSink, (void **)&sink); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); @@ -19,8 +19,8 @@ index 1070e9c1b2d..9d41b05fad3 100644 check_interface(sink, &IID_IMFMediaSinkPreroll, TRUE); check_interface(sink, &IID_IMFVideoRenderer, TRUE); -@@ -7130,6 +7131,351 @@ static void test_media_session_thinning(void) - ok(hr == S_OK, "Shutdown failure, hr %#lx.\n", hr); +@@ -8040,6 +8041,351 @@ static void test_media_session_seek(void) + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); } +static void test_network_bytestream(void) @@ -371,14 +371,14 @@ index 1070e9c1b2d..9d41b05fad3 100644 START_TEST(mf) { init_functions(); -@@ -7165,6 +7511,7 @@ START_TEST(mf) +@@ -8075,6 +8421,7 @@ START_TEST(mf) test_media_session_Start(); test_MFEnumDeviceSources(); test_media_session_Close(); + test_network_bytestream(); test_media_session_source_shutdown(); test_media_session_thinning(); - } + test_media_session_seek(); -- 2.47.2 diff --git a/staging/upstream-commit b/staging/upstream-commit index 42ee26db..b8684911 100644 --- a/staging/upstream-commit +++ b/staging/upstream-commit @@ -1 +1 @@ -e44737278a4487cb8a75f81cedbe7393c5f716cc +7c7b3e43047a26789f1cbd5b3a04a37a3d08e2bd