change log for rtems (2011-03-04)
rtems-vc at rtems.org
rtems-vc at rtems.org
Fri Mar 4 16:10:50 UTC 2011
*joel* (on branch rtems-4-10-branch):
2011-03-04 Joel Sherrill <joel.sherrilL at OARcorp.com>
PR 1744/doc
* user/clock.t: rtems_clock_time_value type uses changed to struct
timeval.
M 1.299 doc/ChangeLog
M 1.274.2.14 doc/ChangeLog
M 1.27 doc/user/clock.t
M 1.26.2.1 doc/user/clock.t
diff -u rtems/doc/ChangeLog:1.298 rtems/doc/ChangeLog:1.299
--- rtems/doc/ChangeLog:1.298 Mon Feb 28 15:58:30 2011
+++ rtems/doc/ChangeLog Fri Mar 4 09:34:10 2011
@@ -1,3 +1,9 @@
+2011-03-04 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1744/doc
+ * user/clock.t: rtems_clock_time_value type uses changed to struct
+ timeval.
+
2011-02-28 Joel Sherrill <joel.sherrill at oarcorp.com>
* setup.def, shell/preface.texi: Bump to 4.10.99.0
diff -u rtems/doc/ChangeLog:1.274.2.13 rtems/doc/ChangeLog:1.274.2.14
--- rtems/doc/ChangeLog:1.274.2.13 Tue Feb 8 11:18:29 2011
+++ rtems/doc/ChangeLog Fri Mar 4 09:34:16 2011
@@ -1,3 +1,9 @@
+2011-03-04 Joel Sherrill <joel.sherrilL at OARcorp.com>
+
+ PR 1744/doc
+ * user/clock.t: rtems_clock_time_value type uses changed to struct
+ timeval.
+
2011-02-08 Joel Sherrill <joel.sherrilL at OARcorp.com>
* common/cpright.texi: Update copyright.
diff -u rtems/doc/user/clock.t:1.26 rtems/doc/user/clock.t:1.27
--- rtems/doc/user/clock.t:1.26 Mon Jan 11 10:18:04 2010
+++ rtems/doc/user/clock.t Fri Mar 4 09:34:10 2011
@@ -345,7 +345,7 @@
@item @code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND} - (rtems_interval *)
- at item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - (rtems_clock_time_value *)
+ at item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - (struct timeval *)
@end itemize
@end ifset
diff -u rtems/doc/user/clock.t:1.26 rtems/doc/user/clock.t:1.26.2.1
--- rtems/doc/user/clock.t:1.26 Mon Jan 11 10:18:04 2010
+++ rtems/doc/user/clock.t Fri Mar 4 09:34:16 2011
@@ -345,7 +345,7 @@
@item @code{@value{RPREFIX}CLOCK_GET_TICKS_PER_SECOND} - (rtems_interval *)
- at item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - (rtems_clock_time_value *)
+ at item @code{@value{RPREFIX}CLOCK_GET_TIME_VALUE} - (struct timeval *)
@end itemize
@end ifset
*joel* (on branch rtems-4-10-branch):
2011-03-04 Till Straumann <strauman at slac.stanford.edu>
PR 1738/bsps
* clock/clock.c, include/bsp.h, network/network.c: system clock driver
programs the PIT w/o assuming the CPU clock frequency being a power
of two.
M 1.120 c/src/lib/libbsp/m68k/uC5282/ChangeLog
M 1.115.2.3 c/src/lib/libbsp/m68k/uC5282/ChangeLog
M 1.18 c/src/lib/libbsp/m68k/uC5282/clock/clock.c
M 1.16.2.1 c/src/lib/libbsp/m68k/uC5282/clock/clock.c
M 1.26 c/src/lib/libbsp/m68k/uC5282/include/bsp.h
M 1.25.2.1 c/src/lib/libbsp/m68k/uC5282/include/bsp.h
M 1.31 c/src/lib/libbsp/m68k/uC5282/network/network.c
M 1.30.2.1 c/src/lib/libbsp/m68k/uC5282/network/network.c
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.119 rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.120
--- rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.119 Thu Feb 17 07:25:10 2011
+++ rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog Fri Mar 4 10:03:46 2011
@@ -1,3 +1,10 @@
+2011-03-04 Till Straumann <strauman at slac.stanford.edu>
+
+ PR 1738/bsps
+ * clock/clock.c, include/bsp.h, network/network.c: system clock driver
+ programs the PIT w/o assuming the CPU clock frequency being a power
+ of two.
+
2011-02-17 Till Straumann <strauman at slac.stanford.edu>
PR 1738/bsps
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.115.2.2 rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.115.2.3
--- rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog:1.115.2.2 Thu Feb 17 07:25:24 2011
+++ rtems/c/src/lib/libbsp/m68k/uC5282/ChangeLog Fri Mar 4 10:03:53 2011
@@ -1,3 +1,10 @@
+2011-03-04 Till Straumann <strauman at slac.stanford.edu>
+
+ PR 1738/bsps
+ * clock/clock.c, include/bsp.h, network/network.c: system clock driver
+ programs the PIT w/o assuming the CPU clock frequency being a power
+ of two.
+
2011-02-17 Till Straumann <strauman at slac.stanford.edu>
PR 1738/bsps
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.17 rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.18
--- rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.17 Fri Feb 11 06:34:18 2011
+++ rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c Fri Mar 4 10:03:46 2011
@@ -26,19 +26,19 @@
* CPU load counters
* Place in static RAM so updates don't hit the SDRAM
*/
-extern int __SRAMBASE[];
-#define IDLE_COUNTER __SRAMBASE[0]
-#define FILTERED_IDLE __SRAMBASE[1]
-#define MAX_IDLE_COUNT __SRAMBASE[2]
-#define USEC_PER_TICK __SRAMBASE[3]
+#define IDLE_COUNTER __SRAMBASE.idle_counter
+#define FILTERED_IDLE __SRAMBASE.filtered_idle
+#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count
+#define PITC_PER_TICK __SRAMBASE.pitc_per_tick
+#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc
#define FILTER_SHIFT 6
uint32_t bsp_clock_nanoseconds_since_last_tick(void)
{
int i = MCF5282_PIT3_PCNTR;
if (MCF5282_PIT3_PCSR & MCF5282_PIT_PCSR_PIF)
- i = MCF5282_PIT3_PCNTR - USEC_PER_TICK;
- return (USEC_PER_TICK - i) * 1000;
+ i = MCF5282_PIT3_PCNTR - PITC_PER_TICK;
+ return (PITC_PER_TICK - i) * NSEC_PER_PITC;
}
#define Clock_driver_nanoseconds_since_last_tick bsp_clock_nanoseconds_since_last_tick
@@ -48,7 +48,7 @@
*/
#define Clock_driver_support_at_tick() \
do { \
- int idle = IDLE_COUNTER; \
+ unsigned idle = IDLE_COUNTER; \
IDLE_COUNTER = 0; \
if (idle > MAX_IDLE_COUNT) \
MAX_IDLE_COUNT = idle; \
@@ -75,20 +75,31 @@
/*
* Set up the clock hardware
*
- * Prescale so that it counts in microseconds
- * System clock frequency better be 2**n (1<=n<=16) MHz!
+ * f_pit = f_clk / 2^(preScaleCode+1) / N = 1/(us_per_tick/us_per_s)
+ *
+ * N = f_clk / 2^(preScaleCode+1) * us_per_tick / us_per_s
+ *
+ * ns_per_pit_clk = ns_per_s / (f_clk / 2^(preScaleCode+1))
+ * = ns_per_s * 2^(preScaleCode+1) / f_clk;
*/
#define Clock_driver_support_initialize_hardware() \
do { \
+ unsigned long long N; \
int level; \
- int preScaleCode = -2; \
- int preScaleDivisor = bsp_get_CPU_clock_speed() / 1000000; \
- while (preScaleDivisor) { \
- preScaleDivisor >>= 1; \
- preScaleCode++; \
- } \
- IDLE_COUNTER = 0; \
- FILTERED_IDLE = 0; \
+ int preScaleCode = 0; \
+ N = bsp_get_CPU_clock_speed(); \
+ N *= rtems_configuration_get_microseconds_per_tick(); \
+ N /= 2*1000000; /* min_prescale * us_per_s */ \
+ while ( N > 0x10000 ) { \
+ preScaleCode++; \
+ N >>= 1; \
+ } \
+ PITC_PER_TICK = N; \
+ N = 2000000000ULL << preScaleCode; \
+ N /= bsp_get_CPU_clock_speed(); \
+ NSEC_PER_PITC = N; \
+ IDLE_COUNTER = 0; \
+ FILTERED_IDLE = 0; \
MAX_IDLE_COUNT = 0; \
bsp_allocate_interrupt(PIT3_IRQ_LEVEL, PIT3_IRQ_PRIORITY); \
MCF5282_INTC0_ICR58 = MCF5282_INTC_ICR_IL(PIT3_IRQ_LEVEL) | \
@@ -101,8 +112,7 @@
MCF5282_PIT_PCSR_OVW | \
MCF5282_PIT_PCSR_PIE | \
MCF5282_PIT_PCSR_RLD; \
- USEC_PER_TICK = rtems_configuration_get_microseconds_per_tick(); \
- MCF5282_PIT3_PMR = USEC_PER_TICK - 1; \
+ MCF5282_PIT3_PMR = PITC_PER_TICK - 1; \
MCF5282_PIT3_PCSR = MCF5282_PIT_PCSR_PRE(preScaleCode) | \
MCF5282_PIT_PCSR_PIE | \
MCF5282_PIT_PCSR_RLD | \
@@ -114,8 +124,9 @@
*/
Thread bsp_idle_thread(uint32_t ignored)
{
- for(;;)
- __asm__ volatile ("addq.l #1,__SRAMBASE"); /* Atomic increment */
+ /* Atomic increment */
+ for(;;)
+ __asm__ volatile ("addq.l #1,%0"::"m"(IDLE_COUNTER));
}
int rtems_bsp_cpu_load_percentage(void)
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.16 rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.16.2.1
--- rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c:1.16 Wed Aug 26 08:32:22 2009
+++ rtems/c/src/lib/libbsp/m68k/uC5282/clock/clock.c Fri Mar 4 10:03:53 2011
@@ -26,19 +26,19 @@
* CPU load counters
* Place in static RAM so updates don't hit the SDRAM
*/
-extern int __SRAMBASE[];
-#define IDLE_COUNTER __SRAMBASE[0]
-#define FILTERED_IDLE __SRAMBASE[1]
-#define MAX_IDLE_COUNT __SRAMBASE[2]
-#define USEC_PER_TICK __SRAMBASE[3]
+#define IDLE_COUNTER __SRAMBASE.idle_counter
+#define FILTERED_IDLE __SRAMBASE.filtered_idle
+#define MAX_IDLE_COUNT __SRAMBASE.max_idle_count
+#define PITC_PER_TICK __SRAMBASE.pitc_per_tick
+#define NSEC_PER_PITC __SRAMBASE.nsec_per_pitc
#define FILTER_SHIFT 6
uint32_t bsp_clock_nanoseconds_since_last_tick(void)
{
int i = MCF5282_PIT3_PCNTR;
if (MCF5282_PIT3_PCSR & MCF5282_PIT_PCSR_PIF)
- i = MCF5282_PIT3_PCNTR - USEC_PER_TICK;
- return (USEC_PER_TICK - i) * 1000;
+ i = MCF5282_PIT3_PCNTR - PITC_PER_TICK;
+ return (PITC_PER_TICK - i) * NSEC_PER_PITC;
}
#define Clock_driver_nanoseconds_since_last_tick bsp_clock_nanoseconds_since_last_tick
@@ -48,7 +48,7 @@
*/
#define Clock_driver_support_at_tick() \
do { \
- int idle = IDLE_COUNTER; \
+ unsigned idle = IDLE_COUNTER; \
IDLE_COUNTER = 0; \
if (idle > MAX_IDLE_COUNT) \
MAX_IDLE_COUNT = idle; \
@@ -75,20 +75,31 @@
/*
* Set up the clock hardware
*
- * Prescale so that it counts in microseconds
- * System clock frequency better be 2**n (1<=n<=16) MHz!
+ * f_pit = f_clk / 2^(preScaleCode+1) / N = 1/(us_per_tick/us_per_s)
+ *
+ * N = f_clk / 2^(preScaleCode+1) * us_per_tick / us_per_s
+ *
+ * ns_per_pit_clk = ns_per_s / (f_clk / 2^(preScaleCode+1))
+ * = ns_per_s * 2^(preScaleCode+1) / f_clk;
*/
#define Clock_driver_support_initialize_hardware() \
do { \
+ unsigned long long N; \
int level; \
- int preScaleCode = -2; \
- int preScaleDivisor = bsp_get_CPU_clock_speed() / 1000000; \
- while (preScaleDivisor) { \
- preScaleDivisor >>= 1; \
- preScaleCode++; \
- } \
- IDLE_COUNTER = 0; \
- FILTERED_IDLE = 0; \
+ int preScaleCode = 0; \
+ N = bsp_get_CPU_clock_speed(); \
+ N *= rtems_configuration_get_microseconds_per_tick(); \
+ N /= 2*1000000; /* min_prescale * us_per_s */ \
+ while ( N > 0x10000 ) { \
+ preScaleCode++; \
+ N >>= 1; \
+ } \
+ PITC_PER_TICK = N; \
+ N = 2000000000ULL << preScaleCode; \
+ N /= bsp_get_CPU_clock_speed(); \
+ NSEC_PER_PITC = N; \
+ IDLE_COUNTER = 0; \
+ FILTERED_IDLE = 0; \
MAX_IDLE_COUNT = 0; \
bsp_allocate_interrupt(PIT3_IRQ_LEVEL, PIT3_IRQ_PRIORITY); \
MCF5282_INTC0_ICR58 = MCF5282_INTC_ICR_IL(PIT3_IRQ_LEVEL) | \
@@ -101,8 +112,7 @@
MCF5282_PIT_PCSR_OVW | \
MCF5282_PIT_PCSR_PIE | \
MCF5282_PIT_PCSR_RLD; \
- USEC_PER_TICK = rtems_configuration_get_microseconds_per_tick(); \
- MCF5282_PIT3_PMR = USEC_PER_TICK - 1; \
+ MCF5282_PIT3_PMR = PITC_PER_TICK - 1; \
MCF5282_PIT3_PCSR = MCF5282_PIT_PCSR_PRE(preScaleCode) | \
MCF5282_PIT_PCSR_PIE | \
MCF5282_PIT_PCSR_RLD | \
@@ -115,7 +125,7 @@
Thread bsp_idle_thread(uint32_t ignored)
{
for(;;)
- asm volatile ("addq.l #1,__SRAMBASE"); /* Atomic increment */
+ asm volatile ("addq.l #1,%0"::"m"(IDLE_COUNTER)); /* Atomic increment */
}
int rtems_bsp_cpu_load_percentage(void)
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.25 rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.26
--- rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.25 Sun Nov 29 08:59:41 2009
+++ rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h Fri Mar 4 10:03:46 2011
@@ -134,6 +134,31 @@
void *bsp_idle_thread( uintptr_t ignored );
#define BSP_IDLE_TASK_BODY bsp_idle_thread
+/*
+ * SRAM. The BSP uses SRAM for maintaining some clock-driver data
+ * and for ethernet descriptors (and the initial stack during
+ * early boot).
+ */
+
+typedef struct mcf5282BufferDescriptor_ {
+ volatile uint16_t status;
+ uint16_t length;
+ volatile void *buffer;
+} mcf5282BufferDescriptor_t;
+
+extern struct {
+ uint32_t idle_counter;
+ uint32_t filtered_idle;
+ uint32_t max_idle_count;
+ uint32_t pitc_per_tick;
+ uint32_t nsec_per_pitc;
+ uint32_t pad[3]; /* align to 16-bytes for descriptors */
+ mcf5282BufferDescriptor_t fec_descriptors[];
+ /* buffer descriptors are allocated from here */
+
+ /* initial stack is at top of SRAM (start.S) */
+} __SRAMBASE;
+
#ifdef __cplusplus
}
#endif
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.25 rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.25.2.1
--- rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h:1.25 Sun Nov 29 08:59:41 2009
+++ rtems/c/src/lib/libbsp/m68k/uC5282/include/bsp.h Fri Mar 4 10:03:53 2011
@@ -134,6 +134,31 @@
void *bsp_idle_thread( uintptr_t ignored );
#define BSP_IDLE_TASK_BODY bsp_idle_thread
+/*
+ * SRAM. The BSP uses SRAM for maintaining some clock-driver data
+ * and for ethernet descriptors (and the initial stack during
+ * early boot).
+ */
+
+typedef struct mcf5282BufferDescriptor_ {
+ volatile uint16_t status;
+ uint16_t length;
+ volatile void *buffer;
+} mcf5282BufferDescriptor_t;
+
+extern struct {
+ uint32_t idle_counter;
+ uint32_t filtered_idle;
+ uint32_t max_idle_count;
+ uint32_t pitc_per_tick;
+ uint32_t nsec_per_pitc;
+ uint32_t pad[3]; /* align to 16-bytes for descriptors */
+ mcf5282BufferDescriptor_t fec_descriptors[];
+ /* buffer descriptors are allocated from here */
+
+ /* initial stack is at top of SRAM (start.S) */
+} __SRAMBASE;
+
#ifdef __cplusplus
}
#endif
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.30 rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.31
--- rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.30 Tue Apr 27 13:23:44 2010
+++ rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c Fri Mar 4 10:03:46 2011
@@ -81,12 +81,6 @@
#error "Driver must have MCLBYTES > RBUF_SIZE"
#endif
-typedef struct mcf5282BufferDescriptor_ {
- volatile uint16_t status;
- uint16_t length;
- volatile void *buffer;
-} mcf5282BufferDescriptor_t;
-
/*
* Per-device data
*/
@@ -197,11 +191,10 @@
* Ensure 128-bit (16-byte) alignment
* Allow some space at the beginning for other diagnostic counters
*/
-extern char __SRAMBASE[];
static mcf5282BufferDescriptor_t *
mcf5282_bd_allocate(unsigned int count)
{
- static mcf5282BufferDescriptor_t *bdp = (mcf5282BufferDescriptor_t *)(__SRAMBASE+16);
+ static mcf5282BufferDescriptor_t *bdp = __SRAMBASE.fec_descriptors;
mcf5282BufferDescriptor_t *p = bdp;
bdp += count;
diff -u rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.30 rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.30.2.1
--- rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c:1.30 Tue Apr 27 13:23:44 2010
+++ rtems/c/src/lib/libbsp/m68k/uC5282/network/network.c Fri Mar 4 10:03:53 2011
@@ -81,12 +81,6 @@
#error "Driver must have MCLBYTES > RBUF_SIZE"
#endif
-typedef struct mcf5282BufferDescriptor_ {
- volatile uint16_t status;
- uint16_t length;
- volatile void *buffer;
-} mcf5282BufferDescriptor_t;
-
/*
* Per-device data
*/
@@ -197,11 +191,10 @@
* Ensure 128-bit (16-byte) alignment
* Allow some space at the beginning for other diagnostic counters
*/
-extern char __SRAMBASE[];
static mcf5282BufferDescriptor_t *
mcf5282_bd_allocate(unsigned int count)
{
- static mcf5282BufferDescriptor_t *bdp = (mcf5282BufferDescriptor_t *)(__SRAMBASE+16);
+ static mcf5282BufferDescriptor_t *bdp = __SRAMBASE.fec_descriptors;
mcf5282BufferDescriptor_t *p = bdp;
bdp += count;
--
Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20110304/d9094037/attachment-0001.html>
More information about the vc
mailing list