Re: TAS patch for building on armel/armhf thumb

Поиск
Список
Период
Сортировка
От Heikki Linnakangas
Тема Re: TAS patch for building on armel/armhf thumb
Дата
Msg-id 4EEB1C77.1000309@enterprisedb.com
обсуждение исходный текст
Ответ на TAS patch for building on armel/armhf thumb  (Martin Pitt <mpitt@debian.org>)
Ответы [PATCH] Use CC atomic builtins if available [was: Re: TAS patch for building on armel/armhf thumb]  (Martin Pitt <mpitt@debian.org>)
Список pgsql-bugs
On 16.12.2011 11:36, Martin Pitt wrote:
> if you build postgresql (tested all releases from 8.4 up to trunk) for
> ARM with the -mthumb instruction set (much better performance), it
> fails with
>
> gcc -g -O2 -g -Wall -O2 -fPIC -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels
-fno-strict-aliasing-fwrapv -g -I../../../../src/include -D_GNU_SOURCE -I/usr/include/libxml2 -I/usr/include/tcl8.5 -c
-oxlog.o xlog.c 
> /tmp/cc8Wkglp.s: Assembler messages:
> /tmp/cc8Wkglp.s:1456: Error: selected processor does not support `swpb r3,r3,[r0]'
> /tmp/cc8Wkglp.s:1587: Error: selected processor does not support `swpb r2,r2,[r0]'
>
> A fair while ago, Alexander Sack from Linaro applied a patch to our
> packages to drop the Assembler bits and instead use gcc's atomic
> builtins [1], which provide a proper implementation for thumb, too.
>
> The original patch spectacularly failed on our slightly newer Panda
> boards (our old builders were Freescale Babbage boards), but I got
> that to work yesterday. Now it's working on Babbage, Panda, both with
> and without hard float (armhf) enabled.
>
> I'm not sure how appropriate it is for upstream to have GCC-isms in
> the code, but even if it can't land upstream, perhaps it is useful for
> other porters/packagers.

Should be ok, as long as it's within #ifdef __GNUC__.

An even better approach would be to have a configure test for
__sync_lock_test_and_set. A quick google search suggests that Intel C
Compiler version >= 11.0 also supports __sync_lock_test_and_set, for
example. It probably makes sense to use it on any platform where it's
defined. Presumably an implementation provided by the compiler is always
going to be at least as good as any magic assembler incantations we can
come up with.

--
   Heikki Linnakangas
   EnterpriseDB   http://www.enterprisedb.com

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Martin Pitt
Дата:
Сообщение: TAS patch for building on armel/armhf thumb
Следующее
От: Havasvölgyi Ottó
Дата:
Сообщение: Re: Postgresql 9.1.2 - abnormal memory usage