Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1514883

Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs. inline asm

From Daniel Lezcano <daniel.lezcano@linaro.org>
Newsgroups linux.kernel
Subject Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs. inline asm
Date 2016-11-03 23:00 +0100
Message-ID <szydd-11E-43@gated-at.bofh.it> (permalink)
References <szxTP-UG-11@gated-at.bofh.it> <szxTP-UG-9@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thu, Nov 03, 2016 at 02:31:32PM -0700, Vineet Gupta wrote:
> The current code doesn't even compile ....

Give a better description in the log, especially if this patch is supposed to
go to stable@
 
> CC: stable@vger.kernel.org
> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
> ---
>  arch/arc/kernel/time.c | 19 +++++++++++--------
>  1 file changed, 11 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c
> index f927b8dc6edd..1a117b999c0c 100644
> --- a/arch/arc/kernel/time.c
> +++ b/arch/arc/kernel/time.c
> @@ -152,14 +152,17 @@ static cycle_t arc_read_rtc(struct clocksource *cs)
>  		cycle_t  full;
>  	} stamp;
>  
> -
> -	__asm__ __volatile(
> -	"1:						\n"
> -	"	lr		%0, [AUX_RTC_LOW]	\n"
> -	"	lr		%1, [AUX_RTC_HIGH]	\n"
> -	"	lr		%2, [AUX_RTC_CTRL]	\n"
> -	"	bbit0.nt	%2, 31, 1b		\n"
> -	: "=r" (stamp.low), "=r" (stamp.high), "=r" (status));
> +        /*
> +         * hardware has an internal state machine which tracks readout of
> +         * low/high and updates the CTRL.status if
> +         *  - interrupt/exception taken between the two reads
> +         *  - high increments after low has been read
> +         */
> +	do {
> +		stamp.low = read_aux_reg(AUX_RTC_LOW);
> +		stamp.high = read_aux_reg(AUX_RTC_HIGH);
> +		status = read_aux_reg(AUX_RTC_CTRL);
> +	} while (!(status & _BITUL(31)));

Is the condition correct ? If I refer to your previous answer, the bit will be
set for status if the counter wrapped up. So in this case, we won't exit the
loop until we wrap up, no ?

>  	return stamp.full;
>  }
> -- 
> 2.7.4
> 

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH v2 00/10] Move ARC timer code into drivers/clocksource/ Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs. inline asm Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
    Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs.  inline asm Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:00 +0100
      Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs.  inline asm Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 23:30 +0100
        Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs.  inline asm Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:40 +0100
          Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs.  inline asm Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:50 +0100
          Re: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C" vs.  inline asm Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 23:50 +0100
    RE: [PATCH v2 01/10] ARC: timer: rtc: implement read loop in "C"  vs. inline asm Alexey Brodkin <Alexey.Brodkin@synopsys.com> - 2016-11-04 19:00 +0100
  [PATCH v2 05/10] ARC: time: move time_init() out of the driver Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 07/10] ARC: breakout aux handling into a separate header Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 08/10] ARC: move mcip.h into include/soc and adjust the includes Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 02/10] ARC: timer: gfrc, rtc: deuglify big endian code Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
    Re: [PATCH v2 02/10] ARC: timer: gfrc, rtc: deuglify big endian code Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:00 +0100
      Re: [PATCH v2 02/10] ARC: timer: gfrc, rtc: deuglify big endian code Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 23:20 +0100
    RE: [PATCH v2 02/10] ARC: timer: gfrc, rtc: deuglify big endian code Alexey Brodkin <Alexey.Brodkin@synopsys.com> - 2016-11-04 19:20 +0100
  [PATCH v2 03/10] ARC: timer: gfrc, rtc: Read BCR to detect whether hardware exists ... Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 10/10] clocksource: import ARC timer driver Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
    Re: [PATCH v2 10/10] clocksource: import ARC timer driver Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:40 +0100
      Re: [PATCH v2 10/10] clocksource: import ARC timer driver Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-04 00:00 +0100
        Re: [PATCH v2 10/10] clocksource: import ARC timer driver Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-04 00:10 +0100
        Re: [PATCH v2 10/10] clocksource: import ARC timer driver Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-04 00:10 +0100
  [PATCH v2 09/10] ARC: breakout timer include code into separate header ... Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 04/10] ARC: timer: gfrc: boot print alongside other timers Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
  [PATCH v2 06/10] ARC: timer: Build gfrc, rtc under same option (64-bit timers) Vineet Gupta <Vineet.Gupta1@synopsys.com> - 2016-11-03 22:40 +0100
    Re: [PATCH v2 06/10] ARC: timer: Build gfrc, rtc under same option  (64-bit timers) Daniel Lezcano <daniel.lezcano@linaro.org> - 2016-11-03 23:20 +0100

csiph-web