---
 c/src/lib/libbsp/sparc/shared/timer/gptimer.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c 
b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c
index 0553f5d..f8c6da2 100644
--- a/c/src/lib/libbsp/sparc/shared/timer/gptimer.c
+++ b/c/src/lib/libbsp/sparc/shared/timer/gptimer.c
@@ -377,7 +377,8 @@ static void gptimer_tlib_reset(struct tlib_dev *hand)
 {
        struct gptimer_timer *timer = (struct gptimer_timer *)hand;
 
-       timer->tregs->ctrl = 0;
+       timer->tregs->ctrl = (timer->tregs->ctrl & timer->irq_ack_mask) &
+                            GPTIMER_CTRL_IP;
        timer->tregs->reload = 0xffffffff;
        timer->tregs->ctrl = GPTIMER_CTRL_LD;
 }
@@ -464,7 +465,8 @@ static void gptimer_tlib_start(struct tlib_dev *hand, int 
once)
        ctrl = GPTIMER_CTRL_LD | GPTIMER_CTRL_EN;
        if ( once == 0 )
                ctrl |= GPTIMER_CTRL_RS; /* Restart Timer */
-       timer->tregs->ctrl |= ctrl;
+       timer->tregs->ctrl = ctrl | (timer->tregs->ctrl & timer->irq_ack_mask &
+                            ~GPTIMER_CTRL_RS);
 }
 
 static void gptimer_tlib_stop(struct tlib_dev *hand)
-- 
2.7.4

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to