Commit 17fec01d by Marcus Shawcroft Committed by Ramana Radhakrishnan

By ramana for Marcus Shawcroft.


2010-08-07  Marcus Shawcroft  <marcus.shawcroft@arm.com>

	* config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with
	'unsigned short' and 'unsigned char' instead of 'short' and 'char'.
	(SUBWORD_BOOL_CAS): Likewise.
	(SUBWORD_SYNC_OP): Likewise.
	(SUBWORD_TEST_AND_SET): Likewise.
	(FETCH_AND_OP_WORD): Parenthesise INF_OP
	(SUBWORD_SYNC_OP): Likewise.
	(OP_AND_FETCH_WORD): Likewise.

        * lib/target-supports.exp (check_effective_target_sync_int_long):
        Add arm*-*-linux-gnueabi.
        (check_effective_target_sync_char_short): Likewise.

From-SVN: r162977
parent b0c13111
2010-08-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
* config/arm/linux-atomic.c (SUBWORD_VAL_CAS): Instantiate with
'unsigned short' and 'unsigned char' instead of 'short' and 'char'.
(SUBWORD_BOOL_CAS): Likewise.
(SUBWORD_SYNC_OP): Likewise.
(SUBWORD_TEST_AND_SET): Likewise.
(FETCH_AND_OP_WORD): Parenthesise INF_OP
(SUBWORD_SYNC_OP): Likewise.
(OP_AND_FETCH_WORD): Likewise.
2010-08-07 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> 2010-08-07 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/cortex-a9.md: Rewrite VFP Pipeline description. * config/arm/cortex-a9.md: Rewrite VFP Pipeline description.
......
...@@ -56,7 +56,7 @@ typedef void (__kernel_dmb_t) (void); ...@@ -56,7 +56,7 @@ typedef void (__kernel_dmb_t) (void);
\ \
do { \ do { \
tmp = *ptr; \ tmp = *ptr; \
failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \ failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
} while (failure != 0); \ } while (failure != 0); \
\ \
return tmp; \ return tmp; \
...@@ -88,8 +88,8 @@ FETCH_AND_OP_WORD (nand, ~, &) ...@@ -88,8 +88,8 @@ FETCH_AND_OP_WORD (nand, ~, &)
\ \
do { \ do { \
oldval = *wordptr; \ oldval = *wordptr; \
newval = ((PFX_OP ((oldval & mask) >> shift) \ newval = ((PFX_OP (((oldval & mask) >> shift) \
INF_OP (unsigned int) val) << shift) & mask; \ INF_OP (unsigned int) val)) << shift) & mask; \
newval |= oldval & ~mask; \ newval |= oldval & ~mask; \
failure = __kernel_cmpxchg (oldval, newval, wordptr); \ failure = __kernel_cmpxchg (oldval, newval, wordptr); \
} while (failure != 0); \ } while (failure != 0); \
...@@ -97,19 +97,19 @@ FETCH_AND_OP_WORD (nand, ~, &) ...@@ -97,19 +97,19 @@ FETCH_AND_OP_WORD (nand, ~, &)
return (RETURN & mask) >> shift; \ return (RETURN & mask) >> shift; \
} }
SUBWORD_SYNC_OP (add, , +, short, 2, oldval) SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (sub, , -, short, 2, oldval) SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (or, , |, short, 2, oldval) SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (and, , &, short, 2, oldval) SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (xor, , ^, short, 2, oldval) SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (nand, ~, &, short, 2, oldval) SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval)
SUBWORD_SYNC_OP (add, , +, char, 1, oldval) SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval)
SUBWORD_SYNC_OP (sub, , -, char, 1, oldval) SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval)
SUBWORD_SYNC_OP (or, , |, char, 1, oldval) SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval)
SUBWORD_SYNC_OP (and, , &, char, 1, oldval) SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval)
SUBWORD_SYNC_OP (xor, , ^, char, 1, oldval) SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval)
SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval) SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval)
#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \ #define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \
int HIDDEN \ int HIDDEN \
...@@ -119,10 +119,10 @@ SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval) ...@@ -119,10 +119,10 @@ SUBWORD_SYNC_OP (nand, ~, &, char, 1, oldval)
\ \
do { \ do { \
tmp = *ptr; \ tmp = *ptr; \
failure = __kernel_cmpxchg (tmp, PFX_OP tmp INF_OP val, ptr); \ failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
} while (failure != 0); \ } while (failure != 0); \
\ \
return PFX_OP tmp INF_OP val; \ return PFX_OP (tmp INF_OP val); \
} }
OP_AND_FETCH_WORD (add, , +) OP_AND_FETCH_WORD (add, , +)
...@@ -132,19 +132,19 @@ OP_AND_FETCH_WORD (and, , &) ...@@ -132,19 +132,19 @@ OP_AND_FETCH_WORD (and, , &)
OP_AND_FETCH_WORD (xor, , ^) OP_AND_FETCH_WORD (xor, , ^)
OP_AND_FETCH_WORD (nand, ~, &) OP_AND_FETCH_WORD (nand, ~, &)
SUBWORD_SYNC_OP (add, , +, short, 2, newval) SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval)
SUBWORD_SYNC_OP (sub, , -, short, 2, newval) SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval)
SUBWORD_SYNC_OP (or, , |, short, 2, newval) SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval)
SUBWORD_SYNC_OP (and, , &, short, 2, newval) SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval)
SUBWORD_SYNC_OP (xor, , ^, short, 2, newval) SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval)
SUBWORD_SYNC_OP (nand, ~, &, short, 2, newval) SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval)
SUBWORD_SYNC_OP (add, , +, char, 1, newval) SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval)
SUBWORD_SYNC_OP (sub, , -, char, 1, newval) SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval)
SUBWORD_SYNC_OP (or, , |, char, 1, newval) SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval)
SUBWORD_SYNC_OP (and, , &, char, 1, newval) SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval)
SUBWORD_SYNC_OP (xor, , ^, char, 1, newval) SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval)
SUBWORD_SYNC_OP (nand, ~, &, char, 1, newval) SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval)
int HIDDEN int HIDDEN
__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
...@@ -194,8 +194,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval) ...@@ -194,8 +194,8 @@ __sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
} \ } \
} }
SUBWORD_VAL_CAS (short, 2) SUBWORD_VAL_CAS (unsigned short, 2)
SUBWORD_VAL_CAS (char, 1) SUBWORD_VAL_CAS (unsigned char, 1)
typedef unsigned char bool; typedef unsigned char bool;
...@@ -216,8 +216,8 @@ __sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval) ...@@ -216,8 +216,8 @@ __sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
return (oldval == actual_oldval); \ return (oldval == actual_oldval); \
} }
SUBWORD_BOOL_CAS (short, 2) SUBWORD_BOOL_CAS (unsigned short, 2)
SUBWORD_BOOL_CAS (char, 1) SUBWORD_BOOL_CAS (unsigned char, 1)
void HIDDEN void HIDDEN
__sync_synchronize (void) __sync_synchronize (void)
...@@ -259,8 +259,8 @@ __sync_lock_test_and_set_4 (int *ptr, int val) ...@@ -259,8 +259,8 @@ __sync_lock_test_and_set_4 (int *ptr, int val)
return (oldval & mask) >> shift; \ return (oldval & mask) >> shift; \
} }
SUBWORD_TEST_AND_SET (short, 2) SUBWORD_TEST_AND_SET (unsigned short, 2)
SUBWORD_TEST_AND_SET (char, 1) SUBWORD_TEST_AND_SET (unsigned char, 1)
#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \ #define SYNC_LOCK_RELEASE(TYPE, WIDTH) \
void HIDDEN \ void HIDDEN \
......
2010-08-07 Marcus Shawcroft <marcus.shawcroft@arm.com>
* lib/target-supports.exp: (check_effective_target_sync_int_long):
Add arm*-*-linux-gnueabi.
(check_effective_target_sync_char_short): Likewise.
2010-08-06 Thomas Koenig <tkoenig@gcc.gnu.org> 2010-08-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/45159 PR fortran/45159
......
...@@ -3000,6 +3000,7 @@ proc check_effective_target_sync_int_long { } { ...@@ -3000,6 +3000,7 @@ proc check_effective_target_sync_int_long { } {
|| [istarget i?86-*-*] || [istarget i?86-*-*]
|| [istarget x86_64-*-*] || [istarget x86_64-*-*]
|| [istarget alpha*-*-*] || [istarget alpha*-*-*]
|| [istarget arm*-*-linux-gnueabi]
|| [istarget bfin*-*linux*] || [istarget bfin*-*linux*]
|| [istarget s390*-*-*] || [istarget s390*-*-*]
|| [istarget powerpc*-*-*] || [istarget powerpc*-*-*]
...@@ -3029,6 +3030,7 @@ proc check_effective_target_sync_char_short { } { ...@@ -3029,6 +3030,7 @@ proc check_effective_target_sync_char_short { } {
|| [istarget i?86-*-*] || [istarget i?86-*-*]
|| [istarget x86_64-*-*] || [istarget x86_64-*-*]
|| [istarget alpha*-*-*] || [istarget alpha*-*-*]
|| [istarget arm*-*-linux-gnueabi]
|| [istarget s390*-*-*] || [istarget s390*-*-*]
|| [istarget powerpc*-*-*] || [istarget powerpc*-*-*]
|| [istarget sparc64-*-*] || [istarget sparc64-*-*]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment