From: Vineet Gupta <Vineet.Gupta1@synopsys.com> To: Daniel Lezcano <daniel.lezcano@linaro.org> Cc: Noam Camus <noamca@mellanox.com>, <tglx@linutronix.de>, <linux-snps-arc@lists.infradead.org>, <linux-kernel@vger.kernel.org>, <Alexey.Brodkin@synopsys.com>, Vineet Gupta <Vineet.Gupta1@synopsys.com> Subject: [PATCH v4 1/8] ARC: timer: gfrc, rtc: deuglify big endian code Date: Fri, 11 Nov 2016 13:38:45 -0800 [thread overview] Message-ID: <1478900332-24279-2-git-send-email-vgupta@synopsys.com> (raw) In-Reply-To: <1478900332-24279-1-git-send-email-vgupta@synopsys.com> A standard "C" shift will be handled appropriately by the compiler depending on the endian for the build. So we don't need the explicit distinction in code Signed-off-by: Vineet Gupta <vgupta@synopsys.com> --- arch/arc/kernel/time.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c index c10390d1ddb6..8d66bb446209 100644 --- a/arch/arc/kernel/time.c +++ b/arch/arc/kernel/time.c @@ -86,26 +86,19 @@ static int noinline arc_get_timer_clk(struct device_node *node) static cycle_t arc_read_gfrc(struct clocksource *cs) { unsigned long flags; - union { -#ifdef CONFIG_CPU_BIG_ENDIAN - struct { u32 h, l; }; -#else - struct { u32 l, h; }; -#endif - cycle_t full; - } stamp; + u32 l, h; local_irq_save(flags); __mcip_cmd(CMD_GFRC_READ_LO, 0); - stamp.l = read_aux_reg(ARC_REG_MCIP_READBACK); + l = read_aux_reg(ARC_REG_MCIP_READBACK); __mcip_cmd(CMD_GFRC_READ_HI, 0); - stamp.h = read_aux_reg(ARC_REG_MCIP_READBACK); + h = read_aux_reg(ARC_REG_MCIP_READBACK); local_irq_restore(flags); - return stamp.full; + return (((cycle_t)h) << 32) | l; } static struct clocksource arc_counter_gfrc = { @@ -143,14 +136,7 @@ CLOCKSOURCE_OF_DECLARE(arc_gfrc, "snps,archs-timer-gfrc", arc_cs_setup_gfrc); static cycle_t arc_read_rtc(struct clocksource *cs) { unsigned long status; - union { -#ifdef CONFIG_CPU_BIG_ENDIAN - struct { u32 high, low; }; -#else - struct { u32 low, high; }; -#endif - cycle_t full; - } stamp; + u32 l, h; /* * hardware has an internal state machine which tracks readout of @@ -159,12 +145,12 @@ static cycle_t arc_read_rtc(struct clocksource *cs) * - high increments after low has been read */ do { - stamp.low = read_aux_reg(AUX_RTC_LOW); - stamp.high = read_aux_reg(AUX_RTC_HIGH); + l = read_aux_reg(AUX_RTC_LOW); + h = read_aux_reg(AUX_RTC_HIGH); status = read_aux_reg(AUX_RTC_CTRL); } while (!(status & _BITUL(31))); - return stamp.full; + return (((cycle_t)h) << 32) | l; } static struct clocksource arc_counter_rtc = { -- 2.7.4
WARNING: multiple messages have this Message-ID (diff)
From: Vineet.Gupta1@synopsys.com (Vineet Gupta) To: linux-snps-arc@lists.infradead.org Subject: [PATCH v4 1/8] ARC: timer: gfrc, rtc: deuglify big endian code Date: Fri, 11 Nov 2016 13:38:45 -0800 [thread overview] Message-ID: <1478900332-24279-2-git-send-email-vgupta@synopsys.com> (raw) In-Reply-To: <1478900332-24279-1-git-send-email-vgupta@synopsys.com> A standard "C" shift will be handled appropriately by the compiler depending on the endian for the build. So we don't need the explicit distinction in code Signed-off-by: Vineet Gupta <vgupta at synopsys.com> --- arch/arc/kernel/time.c | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/arch/arc/kernel/time.c b/arch/arc/kernel/time.c index c10390d1ddb6..8d66bb446209 100644 --- a/arch/arc/kernel/time.c +++ b/arch/arc/kernel/time.c @@ -86,26 +86,19 @@ static int noinline arc_get_timer_clk(struct device_node *node) static cycle_t arc_read_gfrc(struct clocksource *cs) { unsigned long flags; - union { -#ifdef CONFIG_CPU_BIG_ENDIAN - struct { u32 h, l; }; -#else - struct { u32 l, h; }; -#endif - cycle_t full; - } stamp; + u32 l, h; local_irq_save(flags); __mcip_cmd(CMD_GFRC_READ_LO, 0); - stamp.l = read_aux_reg(ARC_REG_MCIP_READBACK); + l = read_aux_reg(ARC_REG_MCIP_READBACK); __mcip_cmd(CMD_GFRC_READ_HI, 0); - stamp.h = read_aux_reg(ARC_REG_MCIP_READBACK); + h = read_aux_reg(ARC_REG_MCIP_READBACK); local_irq_restore(flags); - return stamp.full; + return (((cycle_t)h) << 32) | l; } static struct clocksource arc_counter_gfrc = { @@ -143,14 +136,7 @@ CLOCKSOURCE_OF_DECLARE(arc_gfrc, "snps,archs-timer-gfrc", arc_cs_setup_gfrc); static cycle_t arc_read_rtc(struct clocksource *cs) { unsigned long status; - union { -#ifdef CONFIG_CPU_BIG_ENDIAN - struct { u32 high, low; }; -#else - struct { u32 low, high; }; -#endif - cycle_t full; - } stamp; + u32 l, h; /* * hardware has an internal state machine which tracks readout of @@ -159,12 +145,12 @@ static cycle_t arc_read_rtc(struct clocksource *cs) * - high increments after low has been read */ do { - stamp.low = read_aux_reg(AUX_RTC_LOW); - stamp.high = read_aux_reg(AUX_RTC_HIGH); + l = read_aux_reg(AUX_RTC_LOW); + h = read_aux_reg(AUX_RTC_HIGH); status = read_aux_reg(AUX_RTC_CTRL); } while (!(status & _BITUL(31))); - return stamp.full; + return (((cycle_t)h) << 32) | l; } static struct clocksource arc_counter_rtc = { -- 2.7.4
next prev parent reply other threads:[~2016-11-11 21:39 UTC|newest] Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-11 21:38 [PATCH v4 0/8] Move ARC timer code into drivers/clocksource/ Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta [this message] 2016-11-11 21:38 ` [PATCH v4 1/8] ARC: timer: gfrc, rtc: deuglify big endian code Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 2/8] ARC: timer: gfrc, rtc: Read BCR to detect whether hardware exists Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 3/8] ARC: time: move time_init() out of the driver Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 4/8] ARC: timer: Build gfrc, rtc under same option (64-bit timers) Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 5/8] ARC: breakout aux handling into a separate header Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 6/8] ARC: move mcip.h into include/soc and adjust the includes Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 7/8] ARC: breakout timer include code into separate header Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 21:38 ` [PATCH v4 8/8] clocksource: import ARC timer driver Vineet Gupta 2016-11-11 21:38 ` Vineet Gupta 2016-11-11 23:11 ` Daniel Lezcano 2016-11-11 23:11 ` Daniel Lezcano 2016-11-12 0:53 ` Vineet Gupta 2016-11-12 0:53 ` Vineet Gupta [not found] ` <CAKnoXLzY7Qxw39R029cprqzy4WvKXYf5PReutORO+JyMvaxeqA@mail.gmail.com> 2016-11-15 10:30 ` Daniel Lezcano 2016-11-15 10:30 ` Daniel Lezcano 2016-11-15 17:16 ` Vineet Gupta 2016-11-15 17:16 ` Vineet Gupta 2016-11-15 17:23 ` Daniel Lezcano 2016-11-15 17:23 ` Daniel Lezcano 2016-11-15 17:27 ` Vineet Gupta 2016-11-15 17:27 ` Vineet Gupta [not found] ` <DB6PR0501MB2518CBABEBEB7499F0D023A0AABF0@DB6PR0501MB2518.eurprd05.prod.outlook.com> 2016-11-15 17:49 ` Daniel Lezcano 2016-11-15 17:49 ` Daniel Lezcano [not found] ` <DB6PR0501MB25183F3E7B3B5D224F646F79AABF0@DB6PR0501MB2518.eurprd05.prod.outlook.com> 2016-11-15 19:29 ` Daniel Lezcano 2016-11-15 19:29 ` Daniel Lezcano
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1478900332-24279-2-git-send-email-vgupta@synopsys.com \ --to=vineet.gupta1@synopsys.com \ --cc=Alexey.Brodkin@synopsys.com \ --cc=daniel.lezcano@linaro.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-snps-arc@lists.infradead.org \ --cc=noamca@mellanox.com \ --cc=tglx@linutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.