Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
qemu
提交
d48751ed
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看板
提交
d48751ed
编写于
3月 10, 2011
作者:
E
Edgar E. Iglesias
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
xilinx-ethlite: Simplify byteswapping to/from brams
Signed-off-by:
N
Edgar E. Iglesias
<
edgar.iglesias@petalogix.com
>
上级
b651fc6f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
2 addition
and
15 deletion
+2
-15
hw/xilinx_ethlite.c
hw/xilinx_ethlite.c
+2
-15
未找到文件。
hw/xilinx_ethlite.c
浏览文件 @
d48751ed
...
...
@@ -90,13 +90,8 @@ static uint32_t eth_readl (void *opaque, target_phys_addr_t addr)
D
(
qemu_log
(
"%s %x=%x
\n
"
,
__func__
,
addr
*
4
,
r
));
break
;
/* Rx packet data is endian fixed at the way into the rx rams. This
* speeds things up because the ethlite MAC does not have a len
* register. That means the CPU will issue MMIO reads for the entire
* 2k rx buffer even for small packets.
*/
default:
r
=
s
->
regs
[
addr
]
;
r
=
tswap32
(
s
->
regs
[
addr
])
;
break
;
}
return
r
;
...
...
@@ -145,9 +140,8 @@ eth_writel (void *opaque, target_phys_addr_t addr, uint32_t value)
s
->
regs
[
addr
]
=
value
;
break
;
/* Packet data, make sure it stays BE. */
default:
s
->
regs
[
addr
]
=
cpu_to_be
32
(
value
);
s
->
regs
[
addr
]
=
tswap
32
(
value
);
break
;
}
}
...
...
@@ -172,7 +166,6 @@ static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
{
struct
xlx_ethlite
*
s
=
DO_UPCAST
(
NICState
,
nc
,
nc
)
->
opaque
;
unsigned
int
rxbase
=
s
->
rxbuf
*
(
0x800
/
4
);
int
i
;
/* DA filter. */
if
(
!
(
buf
[
0
]
&
0x80
)
&&
memcmp
(
&
s
->
conf
.
macaddr
.
a
[
0
],
buf
,
6
))
...
...
@@ -186,12 +179,6 @@ static ssize_t eth_rx(VLANClientState *nc, const uint8_t *buf, size_t size)
D
(
qemu_log
(
"%s %d rxbase=%x
\n
"
,
__func__
,
size
,
rxbase
));
memcpy
(
&
s
->
regs
[
rxbase
+
R_RX_BUF0
],
buf
,
size
);
/* Bring it into host endianess. */
for
(
i
=
0
;
i
<
((
size
+
3
)
/
4
);
i
++
)
{
uint32_t
d
=
s
->
regs
[
rxbase
+
R_RX_BUF0
+
i
];
s
->
regs
[
rxbase
+
R_RX_BUF0
+
i
]
=
be32_to_cpu
(
d
);
}
s
->
regs
[
rxbase
+
R_RX_CTRL0
]
|=
CTRL_S
;
if
(
s
->
regs
[
rxbase
+
R_RX_CTRL0
]
&
CTRL_I
)
eth_pulse_irq
(
s
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录