BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build
От | PG Bug reporting form |
---|---|
Тема | BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build |
Дата | |
Msg-id | 15844-8f62fe7e163939b3@postgresql.org обсуждение исходный текст |
Ответы |
Re: BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build
Re: BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build Re: BUG #15844: MIPS: remove .set mips2 in s_lock.h to fix r6 build |
Список | pgsql-bugs |
The following bug has been logged on the website: Bug reference: 15844 Logged by: Yunqiang Su Email address: wzssyqa@gmail.com PostgreSQL version: 12beta1 Operating system: Linux Description: MIPS r6 changes the encoding of LL/SC instruction, while the .set mips2 will force assembler to generate old encoding. This patch can fix this problem. In fact if we not willing to support MIPS I or any CPU without ll/sc at all, we can just remove .set mips2 here. Index: postgresql-11-11.2/src/include/storage/s_lock.h =================================================================== --- postgresql-11-11.2.orig/src/include/storage/s_lock.h +++ postgresql-11-11.2/src/include/storage/s_lock.h @@ -606,6 +606,13 @@ typedef unsigned int slock_t; #define TAS(lock) tas(lock) + +#if __mips_isa_rev >= 6 +# define MIPS_SET_VER " \n" +#else +# define MIPS_SET_VER ".set mips2 \n" +#endif + static __inline__ int tas(volatile slock_t *lock) { @@ -615,7 +622,7 @@ tas(volatile slock_t *lock) __asm__ __volatile__( " .set push \n" - " .set mips2 \n" + MIPS_SET_VER " .set noreorder \n" " .set nomacro \n" " ll %0, %2 \n" @@ -637,7 +644,7 @@ do \ { \ __asm__ __volatile__( \ " .set push \n" \ - " .set mips2 \n" \ + MIPS_SET_VER \ " .set noreorder \n" \ " .set nomacro \n" \ " sync \n" \
В списке pgsql-bugs по дате отправления: