diff options
author | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2012-02-14 09:22:26 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2012-02-14 09:22:26 +0000 |
commit | 62513f7bedaa6e0467da08030b61a35a1b83ab39 (patch) | |
tree | a80b5d4ceb0b9d41b9be9a196c8385adf5c6fcc8 | |
parent | 7daac345d1f14a86dfc929d622a9b881252fb14f (diff) | |
download | gcc-62513f7bedaa6e0467da08030b61a35a1b83ab39.zip gcc-62513f7bedaa6e0467da08030b61a35a1b83ab39.tar.gz gcc-62513f7bedaa6e0467da08030b61a35a1b83ab39.tar.bz2 |
target.h (cpu_relax): Read from CC register.
* config/sparc/target.h (cpu_relax): Read from CC register.
* config/sparc/sjlj.S (GTM_longjmp): Restore %fp atomically.
From-SVN: r184202
-rw-r--r-- | libitm/ChangeLog | 12 | ||||
-rw-r--r-- | libitm/config/sparc/sjlj.S | 9 | ||||
-rw-r--r-- | libitm/config/sparc/target.h | 2 |
3 files changed, 14 insertions, 9 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 6e24888..decdad3 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,10 +1,15 @@ -2012-02-15 Uros Bizjak <ubizjak@gmail.com> +2012-02-14 Eric Botcazou <ebotcazou@adacore.com> + + * config/sparc/target.h (cpu_relax): Read from CC register. + * config/sparc/sjlj.S (GTM_longjmp): Restore %fp atomically. + +2012-02-14 Uros Bizjak <ubizjak@gmail.com> * config/x86/target.h (GTM_longjmp): Jump indirect from memory address. 2012-02-13 Eric Botcazou <ebotcazou@adacore.com> - * configure.tgt (target_cpu): Handle sparc and sparc64 & sparcv9. + * configure.tgt (target_cpu): Handle sparc and sparc64/sparcv9. * config/sparc/cacheline.h: New file. * config/sparc/target.h: Likewise. * config/sparc/sjlj.S: Likewise. @@ -19,8 +24,7 @@ 2012-01-31 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> PR libitm/51822 - * testsuite/libitm.c++/c++.exp (lang_link_flags): Add - -shared-libgcc. + * testsuite/libitm.c++/c++.exp (lang_link_flags): Add -shared-libgcc. Correct libgomp references. 2012-01-24 Torvald Riegel <triegel@redhat.com> diff --git a/libitm/config/sparc/sjlj.S b/libitm/config/sparc/sjlj.S index a42040f..71f4837 100644 --- a/libitm/config/sparc/sjlj.S +++ b/libitm/config/sparc/sjlj.S @@ -79,12 +79,13 @@ _ITM_beginTransaction: GTM_longjmp: cfi_startproc flushw - load [%o1 + OFFSET (JB_CFA)], %fp - cfi_def_cfa(%fp, 0) #if STACK_BIAS - sub %fp, STACK_BIAS, %fp - cfi_def_cfa_offset(STACK_BIAS) + load [%o1 + OFFSET (JB_CFA)], %g1 + sub %g1, STACK_BIAS, %fp +#else + load [%o1 + OFFSET (JB_CFA)], %fp #endif + cfi_def_cfa(%fp, STACK_BIAS) load [%o1 + OFFSET (JB_PC)], %o7 jmp %o7+8 restore %g0, %o0, %o0 diff --git a/libitm/config/sparc/target.h b/libitm/config/sparc/target.h index 8f5b6aa..12eb821 100644 --- a/libitm/config/sparc/target.h +++ b/libitm/config/sparc/target.h @@ -40,7 +40,7 @@ typedef struct gtm_jmpbuf static inline void cpu_relax (void) { - __asm volatile ("" : : : "memory"); + __asm volatile ("rd %%ccr, %%g0" : : : "memory"); } } // namespace GTM |