On Mar 26, 2007, at 8:26 AM, Christian Ehrhardt wrote:

Jimi Xenidis wrote:

On Mar 23, 2007, at 9:07 AM, Hollis Blanchard wrote:

Right, that won't fit in EXCEPTION_HEAD (you will get the assembler
error messages Jimi pasted above).

So EXCEPTION_HEAD branches to a passed in label. Find all those labels and insert PMU_SAVE_STATE there.

I need a register to clobber with my "ori". (H_) EXCEPTION_SAVE_STATE clobbers r0 anyway and it resides in all continue labels that are passed to EXCEPTION_HEAD. So PMU_SAVE_STATE can follow in its wake and clobber r0 too like EXCEPTION_SAVE_STATE.

branches to EXCEPTION_HEAD:
xenppc-unstable_step1/xen# cat arch/powerpc/powerpc64/ exceptions.S | grep "EXCEPTION_HEAD" | sort | uniq
           EXCEPTION_HEAD r13 ex_dec_continued
           EXCEPTION_HEAD r13 ex_external_continued
           EXCEPTION_HEAD r13 ex_hcall_continued
           EXCEPTION_HEAD r13 ex_hdec_continued
           EXCEPTION_HEAD r13 ex_machcheck_continued
           EXCEPTION_HEAD r13 ex_program_continued

One of those calls as example "diff -Naur":
@@ -384,6 +391,7 @@
    mr r14, r0
+    PMU_SAVE_STATE r0,r0
    mr r4, r14
    LOADADDR r12, program_exception
mr r3, r1 /* pass pointer to cpu_user_regs */

Please correct me If my assumption is wrong that I'm allowed to clobber r0 there.

After EXCEPTION_SAVE_STATE r0 and r3-r12 are fair game, so yeah, r0 is fine. r1 points to your save area so I'd use "PMU_SAVE_STATE r0, r1", the macro does not save any state, but it will one day. You should also from the second argument (r1) until you have a patch that actually needs it.

Xen-ppc-devel mailing list

Reply via email to