From 75ed405c63b3fc2402fb8ff825b0ebffcff26b57 Mon Sep 17 00:00:00 2001
From: Roy Huang <roy.huang@analog.com>
Date: Thu, 14 Jun 2007 12:54:44 +0800
Subject: [PATCH] Blackfin arch:  fix bug ad1836 fails to build properly for
 BF533-EZKIT

bug log here: http://blackfin.uclinux.org/gf/project/uclinux-dist/tracker/?action=TrackerItemEdit&tracker_item_id=3166

Signed-off-by: Roy Huang <roy.huang@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
---
 .../asm-blackfin/mach-common/def_LPBlackfin.h | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/include/asm-blackfin/mach-common/def_LPBlackfin.h b/include/asm-blackfin/mach-common/def_LPBlackfin.h
index 76103526aec..be1ece8c0c2 100644
--- a/include/asm-blackfin/mach-common/def_LPBlackfin.h
+++ b/include/asm-blackfin/mach-common/def_LPBlackfin.h
@@ -42,6 +42,12 @@
 
 #if defined(ANOMALY_05000198)
 
+#define bfin_read8(addr) ({ unsigned char __v; \
+		__asm__ __volatile__ ("NOP;\n\t" \
+			"%0 = b[%1] (z);\n\t" \
+			: "=d"(__v) : "a"(addr)); \
+		__v; })
+
 #define bfin_read16(addr) ({ unsigned __v; \
                        __asm__ __volatile__ ("NOP;\n\t"\
 	         			     			"%0 = w[%1] (z);\n\t"\
@@ -52,6 +58,11 @@
                                             "%0 = [%1];\n\t"\
   : "=d"(__v) : "a"(addr)); __v; })
 
+#define bfin_write8(addr, val) ({ \
+		__asm__ __volatile__ ("NOP;\n\t" \
+			"b[%0] = %1;\n\t" \
+			: : "a"(addr), "d"(val) : "memory");})
+
 #define bfin_write16(addr,val) ({\
                       __asm__ __volatile__ ("NOP;\n\t"\
                                             "w[%0] = %1;\n\t"\
@@ -64,6 +75,12 @@
 
 #else
 
+#define bfin_read8(addr) ({ unsigned char __v; \
+		__asm__ __volatile__ ( \
+			"%0 = b[%1] (z);\n\t" \
+			:"=d"(__v) : "a"(addr)); \
+		__v; })
+
 #define bfin_read16(addr) ({ unsigned __v; \
                        __asm__ __volatile__ (\
 	         			     			"%0 = w[%1] (z);\n\t"\
@@ -74,6 +91,11 @@
                                             "%0 = [%1];\n\t"\
   : "=d"(__v) : "a"(addr)); __v; })
 
+#define bfin_write8(addr, val) ({ \
+		__asm__ __volatile__ ( \
+			"b[%0] = %1; \n\t" \
+			::"a"(addr), "d"(val) : "memory");})
+
 #define bfin_write16(addr,val) ({\
                       __asm__ __volatile__ (\
                                             "w[%0] = %1;\n\t"\
-- 
2.41.3