Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
OpenCorePKG_MOD
提交
8cdab5b4
O
OpenCorePKG_MOD
项目概览
btwise
/
OpenCorePKG_MOD
通知
26
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
OpenCorePKG_MOD
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
8cdab5b4
编写于
11月 20, 2022
作者:
S
Shaneee
提交者:
GitHub
11月 20, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
OcAppleKernelLib: Fix TSC/FSB for AMD CPUs in ProvideCurrentCpuInfo (#396)
上级
13356ae4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
7 deletion
+21
-7
Library/OcAppleKernelLib/CpuidPatches.c
Library/OcAppleKernelLib/CpuidPatches.c
+21
-7
未找到文件。
Library/OcAppleKernelLib/CpuidPatches.c
浏览文件 @
8cdab5b4
...
@@ -1418,13 +1418,27 @@ PatchProvideCurrentCpuInfo (
...
@@ -1418,13 +1418,27 @@ PatchProvideCurrentCpuInfo (
//
//
// Perform TSC and FSB calculations. This is traditionally done in tsc.c in XNU.
// Perform TSC and FSB calculations. This is traditionally done in tsc.c in XNU.
//
//
busFreqValue
=
CpuInfo
->
FSBFrequency
;
// For AMD Processors
busFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
busFreqValue
,
NULL
);
if
((
CpuInfo
->
Family
==
0xF
)
&&
((
CpuInfo
->
ExtFamily
==
0x8
)
||
(
CpuInfo
->
ExtFamily
==
0xA
)))
{
busFCvtn2tValue
=
DivU64x64Remainder
(
0xFFFFFFFFFFFFFFFFULL
,
busFCvtt2nValue
,
NULL
);
DEBUG
((
DEBUG_INFO
,
"OCAK: Setting FSB and TSC for Family 0x%x and ExtFamily 0x%x
\n
"
,
(
UINT16
)
CpuInfo
->
Family
,
(
UINT16
)
CpuInfo
->
ExtFamily
));
busFreqValue
=
CpuInfo
->
FSBFrequency
;
tscFreqValue
=
CpuInfo
->
CPUFrequency
;
busFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
busFreqValue
,
NULL
);
tscFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
tscFreqValue
,
NULL
);
busFCvtn2tValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
busFCvtt2nValue
,
NULL
);
tscFCvtn2tValue
=
DivU64x64Remainder
(
0xFFFFFFFFFFFFFFFFULL
,
tscFCvtt2nValue
,
NULL
);
tscFreqValue
=
CpuInfo
->
CPUFrequency
;
tscFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
tscFreqValue
,
NULL
);
tscFCvtn2tValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
tscFCvtt2nValue
,
NULL
);
}
// For all other processors
else
{
busFreqValue
=
CpuInfo
->
FSBFrequency
;
busFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
busFreqValue
,
NULL
);
busFCvtn2tValue
=
DivU64x64Remainder
(
0xFFFFFFFFFFFFFFFFULL
,
busFCvtt2nValue
,
NULL
);
tscFreqValue
=
CpuInfo
->
CPUFrequency
;
tscFCvtt2nValue
=
DivU64x64Remainder
((
1000000000ULL
<<
32
),
tscFreqValue
,
NULL
);
tscFCvtn2tValue
=
DivU64x64Remainder
(
0xFFFFFFFFFFFFFFFFULL
,
tscFCvtt2nValue
,
NULL
);
}
tscGranularityValue
=
DivU64x64Remainder
(
tscFreqValue
,
busFreqValue
,
NULL
);
tscGranularityValue
=
DivU64x64Remainder
(
tscFreqValue
,
busFreqValue
,
NULL
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录