Skip to content
  • Wolfgang Denk's avatar
    TQM8xx[LM]: Fix broken environment alignment. · 67c31036
    Wolfgang Denk authored
    
    
    With recent toolchains, the environment sectors were no longer aligned to
    sector boundaries. The reason was a combination of two bugs:
    
    1) common/environment.c assumed that CONFIG_TQM8xxL would be defined
       for all TQM8xxL and TQM8xxM boards. But "include/common.h", where
       this gets defined, is not included here (and cannot be included
       without causing lots of problems).
    
       Added a new #define CFG_USE_PPCENV for all boards which really
       want to put the environment is a ".ppcenv" section.
    
    2) The linker scripts just include environment.o, silently assuming
       that the objects in that file are really in the order in which
       they are coded in the C file, i. e. "environment" first, then
       "redundand_environment", and "env_size" last. However, current
       toolchains (GCC-4.x) reorder the objects, causing the environment
       data not to start on a flash sector boundary:
    
       Instead of:					we got:
    
    	40008000 T environment			40008000 T env_size
    	4000c000 T redundand_environment	40008004 T redundand_environment
    	40010000 T env_size			4000c004 T environment
    
       Note: this patch fixes just the first part, and cures the alignment
       problem by making sure that "env_size" gets placed correctly. However,
       we still have a potential issue because primary and redundant
       environment sectors are actually swapped, i. e. we have now:
    
    	40008000 T redundand_environment
    	4000c000 T environment
    	40010000 T env_size
    
       This shall be fixed in the next version.
    
    Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
    67c31036