Messages in this thread | | | Subject | Re: want to clarify powerpc assembly conventions in head.S andentry.S | From | "Benjamin Herrenschmidt" <> | Date | Sat, 10 Apr 2004 11:30:14 +0100 |
| |
On Sat, 2004-04-10 at 17:41, Chris Friesen wrote: > I'm doing some work in head.S and entry.S, and I just wanted to make > sure that I had the conventions down. > > According to the docs I read, r0 and r3-12 are caller-saves. They seem > to be saved in EXCEPTION_PROLOG_2 (head.S) and restored in > ret_from_except() (entry.S). Thus, if I add code in entry.S I should be > able to use any of those registers, without having to worry about > restoring them myself--correct?
Yes. For interrupts or faults that's right. Syscalls are a bit special though.
> Also, I'm a bit confused about the three instances of the following line > in entry.S: > > stwcx. r0,0,r1 /* to clear the reservation */ > > I don't see the corresponding lwarx instruction. What reservation is it > referring to?
This is to clear any possible pending reservation if any. The problem is that the reservation mecanism only works accross multiple CPUs. A normal store at an address covered by a reservation on the same CPU will not break the reservation. Thus, to protect from that, any interrupt or exception makes sure to return to the normal code flow with any pending reservation cleared.
Ben.
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |