#include CYGBLD_HAL_PLF_DEFS_H
#include <cyg/hal/hal_soc.h>
-#define CYGHWR_REDBOOT_LINUX_ATAG_MEM(_p_) \
- CYG_MACRO_START \
- { \
- extern unsigned int system_rev; \
- /* Next ATAG_MEM. */ \
- _p_->hdr.size = (sizeof(struct tag_mem32) + sizeof(struct tag_header))/sizeof(long); \
- _p_->hdr.tag = ATAG_MEM; \
- /* Round up so there's only one bit set in the memory size. \
- * Don't double it if it's already a power of two, though. \
- */ \
- _p_->u.mem.size = 1<<hal_msbindex(CYGMEM_REGION_ram_SIZE); \
- if (_p_->u.mem.size < CYGMEM_REGION_ram_SIZE) \
- _p_->u.mem.size <<= 1; \
- _p_->u.mem.start = CYGARC_PHYSICAL_ADDRESS(CYGMEM_REGION_ram); \
- _p_ = (struct tag *)((long *)_p_ + _p_->hdr.size); \
- _p_->hdr.size = ((sizeof(struct tag_revision)) + sizeof(struct tag_header))/sizeof(long); \
- _p_->hdr.tag = ATAG_REVISION; \
- _p_->u.revision.rev = system_rev; \
- } \
+#ifdef RAM_BANK1_SIZE
+#define CYGHWR_REDBOOT_LINUX_ATAG_MEM(_p_) \
+ CYG_MACRO_START \
+ { \
+ extern unsigned int system_rev; \
+ /* Next ATAG_MEM. */ \
+ _p_->hdr.size = (sizeof(struct tag_mem32) + \
+ sizeof(struct tag_header))/sizeof(long); \
+ _p_->hdr.tag = ATAG_MEM; \
+ /* Round up so there's only one bit set in the memory size. \
+ * Don't double it if it's already a power of two, though. \
+ */ \
+ _p_->u.mem.size = 1<<hal_msbindex(RAM_BANK0_SIZE); \
+ if (_p_->u.mem.size < RAM_BANK0_SIZE) \
+ _p_->u.mem.size <<= 1; \
+ _p_->u.mem.start = RAM_BANK0_BASE; \
+ \
+ _p_ = (struct tag *)((long *)_p_ + _p_->hdr.size); \
+ \
+ /* Next ATAG_MEM. */ \
+ _p_->hdr.size = (sizeof(struct tag_mem32) + \
+ sizeof(struct tag_header))/sizeof(long); \
+ _p_->hdr.tag = ATAG_MEM; \
+ /* Round up so there's only one bit set in the memory size. \
+ * Don't double it if it's already a power of two, though. \
+ */ \
+ _p_->u.mem.size = 1<<hal_msbindex(RAM_BANK1_SIZE); \
+ if (_p_->u.mem.size < RAM_BANK1_SIZE) \
+ _p_->u.mem.size <<= 1; \
+ _p_->u.mem.start = RAM_BANK1_BASE; \
+ \
+ _p_ = (struct tag *)((long *)_p_ + _p_->hdr.size); \
+ \
+ _p_->hdr.size = ((sizeof(struct tag_revision)) + \
+ sizeof(struct tag_header))/sizeof(long); \
+ _p_->hdr.tag = ATAG_REVISION; \
+ _p_->u.revision.rev = system_rev; \
+ } \
CYG_MACRO_END
+#else
+#define CYGHWR_REDBOOT_LINUX_ATAG_MEM(_p_) \
+ CYG_MACRO_START \
+ { \
+ extern unsigned int system_rev; \
+ /* Next ATAG_MEM. */ \
+ _p_->hdr.size = (sizeof(struct tag_mem32) + \
+ sizeof(struct tag_header))/sizeof(long); \
+ _p_->hdr.tag = ATAG_MEM; \
+ /* Round up so there's only one bit set in the memory size. \
+ * Don't double it if it's already a power of two, though. \
+ */ \
+ _p_->u.mem.size = 1<<hal_msbindex(RAM_BANK0_SIZE); \
+ if (_p_->u.mem.size < RAM_BANK0_SIZE) \
+ _p_->u.mem.size <<= 1; \
+ _p_->u.mem.start = RAM_BANK0_BASE; \
+ \
+ _p_ = (struct tag *)((long *)_p_ + _p_->hdr.size); \
+ \
+ _p_->hdr.size = ((sizeof(struct tag_revision)) + \
+ sizeof(struct tag_header))/sizeof(long); \
+ _p_->hdr.tag = ATAG_REVISION; \
+ _p_->u.revision.rev = system_rev; \
+ } \
+ CYG_MACRO_END
+#endif /* RAM_BANK1_SIZE */
#endif // CYGONCE_HAL_ARM_BOARD_PLF_IO_H