I think you're right. It looks like these constants are back to front. I believe that what's given below is more correct (although I'll need to do some further testing to be sure):
/*
* Construct some intermediate defines that are used to extract the timer
* configuration from the auto-generated system.h header file.
*/
# define ALT_AVALON_TIMER_PERIOD_UNITS_S 0# define ALT_AVALON_TIMER_PERIOD_UNITS_MS 1# define ALT_AVALON_TIMER_PERIOD_UNITS_US 2# define ALT_AVALON_TIMER_PERIOD_UNITS_CLOCKS 3
# define __ALT_CLK_BASE(name) name##_BASE# define _ALT_CLK_BASE(name) __ALT_CLK_BASE(name)# define ALT_SYS_CLK_BASE _ALT_CLK_BASE(CYGHWR_HAL_SYSCLK_DEV)
# define __ALT_CLK_IRQ(name) name##_IRQ# define _ALT_CLK_IRQ(name) __ALT_CLK_IRQ(name)# define ALT_SYS_CLK_IRQ _ALT_CLK_IRQ(CYGHWR_HAL_SYSCLK_DEV)
# define __ALT_CLK_PERIOD(name) name##_PERIOD# define _ALT_CLK_PERIOD(name) __ALT_CLK_PERIOD(name)# define ALT_SYS_CLK_PERIOD _ALT_CLK_PERIOD(CYGHWR_HAL_SYSCLK_DEV)
# define __ALT_CLK_PERIOD_UNITS(name) name##_ALT_AVALON_TIMER_PERIOD_UNITS# define _ALT_CLK_PERIOD_UNITS(name) __ALT_CLK_PERIOD_UNITS(name)# define ALT_SYS_CLK_PERIOD_UNITS _ALT_CLK_PERIOD_UNITS(CYGHWR_HAL_SYSCLK_DEV)
# define __ALT_CLK_FREQ(name) name##_FREQ# define _ALT_CLK_FREQ(name) __ALT_CLK_FREQ(name)# define ALT_SYS_CLK_FREQ _ALT_CLK_FREQ(CYGHWR_HAL_SYSCLK_DEV)
/*
* Having extracted the timer constants, use these to contruct the real time clock constants
* required for eCos.
*/
# define CYGNUM_HAL_RTC_CONSTANTS (1)
# define CYGNUM_HAL_RTC_NUMERATOR (1000000 * ALT_SYS_CLK_PERIOD *
((ALT_SYS_CLK_PERIOD_UNITS == ALT_AVALON_TIMER_PERIOD_UNITS_S ) ? 1000 : 1))# define CYGNUM_HAL_RTC_DENOMINATOR ((ALT_SYS_CLK_PERIOD_UNITS == ALT_AVALON_TIMER_PERIOD_UNITS_US ) ? 1000 :
(ALT_SYS_CLK_PERIOD_UNITS == ALT_AVALON_TIMER_PERIOD_UNITS_CLOCKS ) ?
(ALT_SYS_CLK_FREQ/1000) : 1)# define CYGNUM_HAL_RTC_PERIOD (ALT_SYS_CLK_FREQ / CYGNUM_HAL_RTC_DENOMINATOR /
((ALT_SYS_CLK_PERIOD_UNITS != ALT_AVALON_TIMER_PERIOD_UNITS_S ) ? 1000 : 1))
# define CYGNUM_HAL_INTERRUPT_RTC ALT_SYS_CLK_IRQ
Thanks for pointing this out!