From: Kevin Hilman <khilman@deeprootsystems.com>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>,
Richard Woodruff <r-woodruff2@ti.com>
Cc: linux-arm-kernel@lists.arm.linux.org.uk,
linux-omap@vger.kernel.org,
Jouni Hogander <jouni.hogander@nokia.com>,
Paul Walmsley <paul@pwsan.com>
Subject: Re: [PATCH 01/11] OMAP2/3: PM: push core PM code from linux-omap
Date: Mon, 18 May 2009 10:08:36 -0700 [thread overview]
Message-ID: <878wku8hkb.fsf@deeprootsystems.com> (raw)
In-Reply-To: <20090518133241.GH3067@n2100.arm.linux.org.uk> (Russell King's message of "Mon\, 18 May 2009 14\:32\:41 +0100")
[ adding Richard W. to To: since he can probably shed some light here ]
Russell King - ARM Linux <linux@arm.linux.org.uk> writes:
> On Fri, May 15, 2009 at 11:40:41AM -0700, Kevin Hilman wrote:
>> This patch is to sync the core linux-omap PM code with mainline. This
>> code has evolved and been used for a while the linux-omap tree, but
>> the attempt here is to finally get this into mainline.
[...]
[excerpt of sleep34xx.S]
>> + /* IRQ mode */
>> + bic r0, r7, #0x1F
>> + orr r0, r0, #0x12
>> + msr cpsr, r0 /*go into IRQ mode*/
>> + ldmia r3!,{r4-r6} /*load the SP and LR from SDRAM*/
>> + mov sp, r4 /*update the SP */
>> + mov lr, r5 /*update the LR */
>> + msr spsr, r6 /*update the SPSR */
>> +
>> + /* ABORT mode */
>> + bic r0, r7, #0x1F
>> + orr r0, r0, #0x17
>> + msr cpsr, r0 /* go into ABORT mode */
>> + ldmia r3!,{r4-r6} /*load the SP and LR from SDRAM */
>> + mov sp, r4 /*update the SP */
>> + mov lr, r5 /*update the LR */
>> + msr spsr, r6 /*update the SPSR */
>> +
>> + /* UNDEEF mode */
>> + bic r0, r7, #0x1F
>> + orr r0, r0, #0x1B
>> + msr cpsr, r0 /*go into UNDEF mode */
>> + ldmia r3!,{r4-r6} /*load the SP and LR from SDRAM */
>> + mov sp, r4 /*update the SP*/
>> + mov lr, r5 /*update the LR*/
>> + msr spsr, r6 /*update the SPSR*/
>> +
>> + /* SYSTEM (USER) mode */
>> + bic r0, r7, #0x1F
>> + orr r0, r0, #0x1F
>> + msr cpsr, r0 /*go into USR mode */
>> + ldmia r3!,{r4-r6} /*load the SP and LR from SDRAM*/
>> + mov sp, r4 /*update the SP */
>> + mov lr, r5 /*update the LR */
>> + msr spsr, r6 /*update the SPSR */
>> + msr cpsr, r7 /*back to original mode*/
>
> There is a function which re-initializes the abort mode registers already -
> cpu_init(). Please use that if possible instead.
Upon a quick glance, using cpu_init() would not cover all the things
that this code does. cpu_init() only handles the init of sp for the
various modes, where this code saves/resores all the banked registers:
sp, lr and spsr as well as r8-r12 of FIQ mode.
The question in my mind however is whether the lr and spsr need to be
saved/restored? Do we really need to preserve the context of these
handlers across idle? Presumably we should not hit idle/suspend in
the middle of one of these handlers, so do we need to save anything
other than the stp? Maybe Richard can shed some light here as to why
that was added.
Kevin
next prev parent reply other threads:[~2009-05-18 17:08 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-15 18:40 [PATCH 00/11] OMAP2/3: PM sync-up Kevin Hilman
2009-05-15 18:40 ` [PATCH 01/11] OMAP2/3: PM: push core PM code from linux-omap Kevin Hilman
2009-05-15 18:40 ` [PATCH 02/11] OMAP: Add new function to check wether there is irq pending Kevin Hilman
2009-05-15 18:40 ` [PATCH 03/11] OMAP3: PM: Force IVA2 into idle during bootup Kevin Hilman
2009-05-15 18:40 ` [PATCH 04/11] OMAP3: PM: Add wake-up bit defintiions for CONTROL_PADCONF_X Kevin Hilman
2009-05-15 18:40 ` [PATCH 05/11] OMAP3: PM: UART: disable clocks when idle and off-mode support Kevin Hilman
2009-05-15 18:40 ` [PATCH 06/11] OMAP3: PM: Add D2D clocks and auto-idle setup to PRCM init Kevin Hilman
2009-05-15 18:40 ` [PATCH 07/11] OMAP3: PM: D2D clockdomain supports SW supervised transitions Kevin Hilman
2009-05-15 18:40 ` [PATCH 08/11] OMAP3: PM: Ensure MUSB block can idle when driver not loaded Kevin Hilman
2009-05-15 18:40 ` [PATCH 09/11] OMAP3: PM: Ensure PRCM interrupts are cleared at boot Kevin Hilman
2009-05-15 18:40 ` [PATCH 10/11] OMAP3: PM: Clear pending PRCM reset flags on init Kevin Hilman
2009-05-15 18:40 ` [PATCH 11/11] OMAP3: PM: prevent module wakeups from waking IVA2 Kevin Hilman
2009-05-18 13:16 ` [PATCH 08/11] OMAP3: PM: Ensure MUSB block can idle when driver not loaded Russell King - ARM Linux
2009-05-18 14:50 ` Kevin Hilman
2009-05-18 15:04 ` Tony Lindgren
2009-05-18 13:32 ` [PATCH 01/11] OMAP2/3: PM: push core PM code from linux-omap Russell King - ARM Linux
2009-05-18 17:00 ` Kevin Hilman
2009-05-18 17:06 ` Russell King - ARM Linux
2009-05-18 17:28 ` Kevin Hilman
2009-05-19 5:49 ` Artem Bityutskiy
2009-05-19 14:57 ` Kevin Hilman
2009-05-19 18:55 ` Kevin Hilman
2009-05-28 13:43 ` Russell King - ARM Linux
2009-05-18 17:08 ` Kevin Hilman [this message]
2009-05-18 18:30 ` Russell King - ARM Linux
2009-05-18 19:04 ` Woodruff, Richard
2009-05-18 20:24 ` Russell King - ARM Linux
2009-05-18 20:47 ` Woodruff, Richard
2009-05-18 21:11 ` Russell King - ARM Linux
2009-05-18 21:19 ` Woodruff, Richard
2009-05-19 0:23 ` Kevin Hilman
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=878wku8hkb.fsf@deeprootsystems.com \
--to=khilman@deeprootsystems.com \
--cc=jouni.hogander@nokia.com \
--cc=linux-arm-kernel@lists.arm.linux.org.uk \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=paul@pwsan.com \
--cc=r-woodruff2@ti.com \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox