diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
index 47f44195a8ca71371caa214484c6d814ea6387e7..d3df6bd76f83a4e646016ae1e49e99f7610bc422 100644
--- a/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
+++ b/dlls/api-ms-win-core-sysinfo-l1-2-0/api-ms-win-core-sysinfo-l1-2-0.spec
@@ -9,7 +9,7 @@
 @ stdcall GetProductInfo(long long long long ptr) kernel32.GetProductInfo
 @ stdcall GetSystemDirectoryA(ptr long) kernel32.GetSystemDirectoryA
 @ stdcall GetSystemDirectoryW(ptr long) kernel32.GetSystemDirectoryW
-@ stub GetSystemFirmwareTable
+@ stdcall GetSystemFirmwareTable(long long ptr long) kernel32.GetSystemFirmwareTable
 @ stdcall GetSystemInfo(ptr) kernel32.GetSystemInfo
 @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime
 @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment
diff --git a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
index 79bfc606a6483785a76cbbff73729acce83cd789..29262c5fc3b26aaa03579a2c970bbec6ad532815 100644
--- a/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
+++ b/dlls/api-ms-win-core-sysinfo-l1-2-1/api-ms-win-core-sysinfo-l1-2-1.spec
@@ -11,7 +11,7 @@
 @ stdcall GetProductInfo(long long long long ptr) kernel32.GetProductInfo
 @ stdcall GetSystemDirectoryA(ptr long) kernel32.GetSystemDirectoryA
 @ stdcall GetSystemDirectoryW(ptr long) kernel32.GetSystemDirectoryW
-@ stub GetSystemFirmwareTable
+@ stdcall GetSystemFirmwareTable(long long ptr long) kernel32.GetSystemFirmwareTable
 @ stdcall GetSystemInfo(ptr) kernel32.GetSystemInfo
 @ stdcall GetSystemTime(ptr) kernel32.GetSystemTime
 @ stdcall GetSystemTimeAdjustment(ptr ptr ptr) kernel32.GetSystemTimeAdjustment
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index bd6d644bc4872a173ff09d0614136453aaad0978..71478dcd1dac7666371bdf17c93d8e0cbbeb9c4b 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -650,6 +650,7 @@
 @ stdcall GetSystemDEPPolicy()
 @ stdcall GetSystemDirectoryA(ptr long)
 @ stdcall GetSystemDirectoryW(ptr long)
+@ stdcall GetSystemFirmwareTable(long long ptr long)
 @ stdcall GetSystemInfo(ptr)
 @ stdcall GetSystemPowerStatus(ptr)
 @ stdcall GetSystemRegistryQuota(ptr ptr)
diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c
index 8204dd982281e75352cda07f0dc46f2832693d37..b371e73d10ca1a1e4af7aeffd072d75413d8746d 100644
--- a/dlls/kernel32/process.c
+++ b/dlls/kernel32/process.c
@@ -4004,3 +4004,13 @@ HRESULT WINAPI UnregisterApplicationRestart(void)
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return S_OK;
 }
+
+/***********************************************************************
+ *           GetSystemFirmwareTable       (KERNEL32.@)
+ */
+UINT WINAPI GetSystemFirmwareTable(DWORD provider, DWORD id, PVOID buffer, DWORD size)
+{
+    FIXME("(%d %d %p %d):stub\n", provider, id, buffer, size);
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
+}
diff --git a/include/winbase.h b/include/winbase.h
index 3055d5f8abc2b82f6fb263ed222176cdc2d385ce..561819dba61e0d04f7d5d01a25d20ba089bbb033 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -2008,6 +2008,7 @@ WINBASEAPI HANDLE      WINAPI GetStdHandle(DWORD);
 WINBASEAPI UINT        WINAPI GetSystemDirectoryA(LPSTR,UINT);
 WINBASEAPI UINT        WINAPI GetSystemDirectoryW(LPWSTR,UINT);
 #define                       GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory)
+WINBASEAPI UINT        WINAPI GetSystemFirmwareTable(DWORD,DWORD,PVOID,DWORD);
 WINBASEAPI VOID        WINAPI GetSystemInfo(LPSYSTEM_INFO);
 WINBASEAPI BOOL        WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS);
 WINBASEAPI BOOL        WINAPI GetSystemRegistryQuota(PDWORD,PDWORD);