PERFORCE change 227821 for review
Brooks Davis
brooks at FreeBSD.org
Wed Apr 17 22:19:33 UTC 2013
http://p4web.freebsd.org/@@227821?ac=10
Change 227821 by brooks at brooks_zenith on 2013/04/17 22:18:52
Improve generic_bs_*_8 implementation with issues found while
submitting for revew and as a result of review.
Affected files ...
.. //depot/projects/ctsrd/beribsd/src/sys/mips/include/cpufunc.h#6 edit
.. //depot/projects/ctsrd/beribsd/src/sys/mips/mips/bus_space_generic.c#11 edit
Differences ...
==== //depot/projects/ctsrd/beribsd/src/sys/mips/include/cpufunc.h#6 (text+ko) ====
@@ -354,11 +354,15 @@
#define readb(va) (*(volatile uint8_t *) (va))
#define readw(va) (*(volatile uint16_t *) (va))
#define readl(va) (*(volatile uint32_t *) (va))
-#define readd(va) mips3_ld(va)
+#if defined(__GNUC__) && !defined(__mips_o32)
+#define readq(a) (*(volatile uint64_t *)(a))
+#endif
#define writeb(va, d) (*(volatile uint8_t *) (va) = (d))
#define writew(va, d) (*(volatile uint16_t *) (va) = (d))
#define writel(va, d) (*(volatile uint32_t *) (va) = (d))
-#define writed(va, d) mips3_sd((va), (d))
+#if defined(__GNUC__) && !defined(__mips_o32)
+#define writeq(va, d) (*(volatile uint64_t *) (va) = (d))
+#endif
#endif /* !_MACHINE_CPUFUNC_H_ */
==== //depot/projects/ctsrd/beribsd/src/sys/mips/mips/bus_space_generic.c#11 (text+ko) ====
@@ -219,11 +219,15 @@
#define rd8(a) readb(a)
#define rd16(a) readw(a)
#define rd32(a) readl(a)
-#define rd64(a) readd(a)
+#ifdef readq
+#define rd64(a) readq((a))
+#endif
#define wr8(a, v) writeb(a, v)
#define wr16(a, v) writew(a, v)
#define wr32(a, v) writel(a, v)
-#define wr64(a, v) writed(a, v)
+#ifdef writeq
+#define wr64(a, v) writeq(a, v)
+#endif
#endif
/* generic bus_space tag */
@@ -441,7 +445,7 @@
uint64_t value)
{
-#ifdef rd64
+#ifdef wr64
wr64(bsh + offset, value);
#else
panic("%s: not implemented", __func__);
@@ -486,7 +490,7 @@
generic_bs_wm_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
const uint64_t *addr, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t baddr = bsh + offset;
while (count--)
@@ -540,7 +544,7 @@
generic_bs_wr_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
const uint64_t *addr, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t baddr = bsh + offset;
while (count--) {
@@ -590,7 +594,7 @@
generic_bs_sm_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
uint64_t value, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t addr = bsh + offset;
while (count--)
@@ -638,7 +642,7 @@
generic_bs_sr_8(void *t, bus_space_handle_t bsh, bus_size_t offset,
uint64_t value, size_t count)
{
-#ifdef rd64
+#ifdef wr64
bus_addr_t addr = bsh + offset;
for (; count != 0; count--, addr += 8)
@@ -716,7 +720,7 @@
generic_bs_c_8(void *t, bus_space_handle_t bsh1, bus_size_t off1,
bus_space_handle_t bsh2, bus_size_t off2, size_t count)
{
-#ifdef rd64
+#if defined(rd64) && defined(wr64)
bus_addr_t addr1 = bsh1 + off1;
bus_addr_t addr2 = bsh2 + off2;
More information about the p4-projects
mailing list