Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
28ab0e2e
Q
qemu
项目概览
openeuler
/
qemu
通知
10
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
qemu
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
28ab0e2e
编写于
5月 20, 2004
作者:
B
bellard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added cpu_get_tsc()
git-svn-id:
svn://svn.savannah.nongnu.org/qemu/trunk@837
c046a42c-6fe2-441c-8c8c-71466251a162
上级
b54ad049
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
56 addition
and
11 deletion
+56
-11
hw/pc.c
hw/pc.c
+7
-0
linux-user/main.c
linux-user/main.c
+40
-0
target-i386/cpu.h
target-i386/cpu.h
+2
-0
target-i386/helper.c
target-i386/helper.c
+2
-11
tests/qruncom.c
tests/qruncom.c
+5
-0
未找到文件。
hw/pc.c
浏览文件 @
28ab0e2e
...
...
@@ -57,6 +57,13 @@ static void ioportF0_write(void *opaque, uint32_t addr, uint32_t data)
pic_set_irq
(
13
,
0
);
}
/* TSC handling */
uint64_t
cpu_get_tsc
(
CPUX86State
*
env
)
{
return
qemu_get_clock
(
vm_clock
);
}
/* PC cmos mappings */
#define REG_EQUIPMENT_BYTE 0x14
...
...
linux-user/main.c
浏览文件 @
28ab0e2e
...
...
@@ -99,10 +99,50 @@ int cpu_get_pic_interrupt(CPUState *env)
return
-
1
;
}
/* timers for rdtsc */
#if defined(__i386__)
int64_t
cpu_get_real_ticks
(
void
)
{
int64_t
val
;
asm
volatile
(
"rdtsc"
:
"=A"
(
val
));
return
val
;
}
#elif defined(__x86_64__)
int64_t
cpu_get_real_ticks
(
void
)
{
uint32_t
low
,
high
;
int64_t
val
;
asm
volatile
(
"rdtsc"
:
"=a"
(
low
),
"=d"
(
high
));
val
=
high
;
val
<<=
32
;
val
|=
low
;
return
val
;
}
#else
static
uint64_t
emu_time
;
int64_t
cpu_get_real_ticks
(
void
)
{
return
emu_time
++
;
}
#endif
#ifdef TARGET_I386
/***********************************************************/
/* CPUX86 core interface */
uint64_t
cpu_get_tsc
(
CPUX86State
*
env
)
{
return
cpu_get_real_ticks
();
}
static
void
write_dt
(
void
*
ptr
,
unsigned
long
addr
,
unsigned
long
limit
,
int
flags
)
{
...
...
target-i386/cpu.h
浏览文件 @
28ab0e2e
...
...
@@ -443,6 +443,8 @@ int cpu_x86_signal_handler(int host_signum, struct siginfo *info,
void
*
puc
);
void
cpu_x86_set_a20
(
CPUX86State
*
env
,
int
a20_state
);
uint64_t
cpu_get_tsc
(
CPUX86State
*
env
);
/* will be suppressed */
void
cpu_x86_update_cr0
(
CPUX86State
*
env
,
uint32_t
new_cr0
);
...
...
target-i386/helper.c
浏览文件 @
28ab0e2e
...
...
@@ -1775,20 +1775,11 @@ void helper_invlpg(unsigned int addr)
cpu_x86_flush_tlb
(
env
,
addr
);
}
/* rdtsc */
#if !defined(__i386__) && !defined(__x86_64__)
uint64_t
emu_time
;
#endif
void
helper_rdtsc
(
void
)
{
uint64_t
val
;
#if defined(__i386__) || defined(__x86_64__)
asm
volatile
(
"rdtsc"
:
"=A"
(
val
));
#else
/* better than nothing: the time increases */
val
=
emu_time
++
;
#endif
val
=
cpu_get_tsc
(
env
);
EAX
=
val
;
EDX
=
val
>>
32
;
}
...
...
tests/qruncom.c
浏览文件 @
28ab0e2e
...
...
@@ -55,6 +55,11 @@ int cpu_get_pic_interrupt(CPUState *env)
return
-
1
;
}
uint64_t
cpu_get_tsc
(
CPUState
*
env
)
{
return
0
;
}
static
void
set_gate
(
void
*
ptr
,
unsigned
int
type
,
unsigned
int
dpl
,
unsigned
long
addr
,
unsigned
int
sel
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录