This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Sun, 2002-05-19 at 13:03, Thomas Koeller wrote: > Hi, > > the definitions for HAL_READ_UINT32_STRING and HAL_WRITE_UINT32_STRING > in hal/arm/arch/current/include/hal_io.h are broken. Here's a patch to fix this: > Thanks for pointing this out! Actually, there was more wrong than just this. We [obviously] took the time to develop and define these macros, but they've never found much use, thus they were broken from day 1. The real change I've just committed is: Index: hal/arm/arch/current/ChangeLog =================================================================== RCS file: /home/cvs/ecc/ecc/hal/arm/arch/current/ChangeLog,v retrieving revision 1.250 diff -u -5 -p -r1.250 ChangeLog --- hal/arm/arch/current/ChangeLog 18 May 2002 23:02:35 -0000 1.250 +++ hal/arm/arch/current/ChangeLog 20 May 2002 12:48:11 -0000 @@ -1,5 +1,10 @@ +2002-05-20 Gary Thomas <gthomas@redhat.com> + + * include/hal_io.h: Fix ...STRING macros - not using index. + Pointed out by Thomas Koeller <thomas@koeller.dyndns.org>. + 2002-05-09 Nick Garnett <nickg@redhat.com> * src/vectors.S (handle_IRQ_or_FIQ): Save SVC mode LR in interrupt handling as well as exceptions. Index: hal/arm/arch/current/include/hal_io.h =================================================================== RCS file: /home/cvs/ecc/ecc/hal/arm/arch/current/include/hal_io.h,v retrieving revision 1.21 diff -u -5 -p -r1.21 hal_io.h --- hal/arm/arch/current/include/hal_io.h 18 May 2002 23:02:36 -0000 1.21 +++ hal/arm/arch/current/include/hal_io.h 20 May 2002 12:51:16 -0000 @@ -109,11 +109,11 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG #define HAL_READ_UINT8_STRING( _register_, _buf_, _count_ ) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - (_buf_)[_i_] = ((volatile CYG_BYTE *)(_register_)); \ + (_buf_)[_i_] = ((volatile CYG_BYTE *)(_register_))[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT8_STRING( _register_, _buf_, _count_ ) \ CYG_MACRO_START \ cyg_count32 _i_; \ @@ -148,19 +148,19 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG #define HAL_READ_UINT8_STRING( _register_, _buf_, _count_ ) \ CYG_MACRO_START \ cyg_count32 _i_; \ volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ for( _i_ = 0; _i_ < (_count_); _i_++; \ - (_buf_)[_i_] = _r_; \ + (_buf_)[_i_] = _r_[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT8_STRING( _register_, _buf_, _count_ ) \ CYG_MACRO_START \ cyg_count32 _i_; \ volatile CYG_BYTE* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - _r_ = (_buf_)[_i_]; \ + _r_[_i_] = (_buf_)[_i_]; \ CYG_MACRO_END #endif // Big-endian //----------------------------------------------------------------------------- @@ -192,18 +192,18 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG #define HAL_READ_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_)); \ + (_buf_)[_i_] = ((volatile CYG_WORD16 *)(_register_))[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - ((volatile CYG_WORD16 *)(_register_)) = (_buf_)[_i_]; \ + ((volatile CYG_WORD16 *)(_register_))[_i_] = (_buf_)[_i_]; \ CYG_MACRO_END #else // Big-endian version @@ -232,19 +232,19 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG #define HAL_READ_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ for( _i_ = 0 = 0; _i_ < (_count_); _i_++) \ - (_buf_)[_i_] = _r_; \ + (_buf_)[_i_] = _r_[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT16_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ volatile CYG_WORD16* _r_ = ((CYG_ADDRWORD)(_register_)^3); \ for( _i_ = 0 = 0; _i_ < (_count_); _i_++) \ - _r_ = (_buf_)[_i_]; \ + _r_[_i_] = (_buf_)[_i_]; \ CYG_MACRO_END #endif // Big-endian @@ -276,18 +276,18 @@ typedef volatile CYG_ADDRWORD HAL_IO_REG #define HAL_READ_UINT32_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - (_buf_)[_i_] = ((volatile CYG_WORD32 *)(_register_)); \ + (_buf_)[_i_] = ((volatile CYG_WORD32 *)(_register_))[_i_]; \ CYG_MACRO_END #define HAL_WRITE_UINT32_STRING( _register_, _buf_, _count_) \ CYG_MACRO_START \ cyg_count32 _i_; \ for( _i_ = 0; _i_ < (_count_); _i_++) \ - ((volatile CYG_WORD32 *)(_register_)) = (_buf_)[_i_]; \ + ((volatile CYG_WORD32 *)(_register_))[_i_] = (_buf_)[_i_]; \ CYG_MACRO_END // Enforce a flow "barrier" to prevent optimizing compiler from reordering // operations. #define HAL_IO_BARRIER()
Attachment:
signature.asc
Description: This is a digitally signed message part
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |