|
From: | Fabrice Bellard |
Subject: | [Qemu-devel] Re: PCNet and Lance merge, almost there |
Date: | Thu, 24 Aug 2006 20:30:16 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.3) Gecko/20040913 |
Blue Swirl wrote:
Hi,I got PCNet working in Sun4m architecture by fixing endianness problems and adding IOMMU hooks. There are still some endianness issues, that's why I disabled the address matching code.The original code could benefit from some touchup and performance tuning. Any comments?
- A general remark : instead of using SPARC_IOMMU_TRANSLATE, you should use new memory helpers to read or write bytes such as pcnet_physical_memory_read() and pcnet_physical_memory_write(). The rationale is that ultimately pci memory accesses will also use PCI specific I/Os to handle the case where the PCI memory is not mapped directly in the CPU address space. For the sparc iommu you should define global helpers such as sparc_iommu_memory_read() and sparc_iommu_memory_write().
- CPU specific #ifdefs (or CPU specific endianness macros) should be avoided in device code unless it is really necessary. The rationale is that ultimately there will be a single QEMU executable supporting all machines and CPUs. In the pcnet case for example, the macro 'SPARC_FIX_DESC' is almost surely not necessary because the device seems implicitely little endian (the original code lacks correct endianness conversion routines !).
Regards, Fabrice.
[Prev in Thread] | Current Thread | [Next in Thread] |