[haiku-gsoc] Re: [Haiku ARM port] Debugging double spinlock acquiring in dprintf_args

  • From: Arvind S Raj <sraj.arvind@xxxxxxxxx>
  • To: haiku-gsoc <haiku-gsoc@xxxxxxxxxxxxx>
  • Date: Thu, 14 Aug 2014 00:36:21 +0530

Hello Ingo,

On 13 August 2014 23:58, Ingo Weinhold <ingo_weinhold@xxxxxx> wrote:
>
> Without seeing your actual changes, just from your description and the build
> output, I find it hard to comment.

[1] is the diff and [2] is the contents of generic_atomic.cpp. I
included only those files which were relevant(the rest were mostly
traces enabled and the changes to repositories/HaikuPorts/arm that
enable the bootstrap build). If the contents of any other files are
required, I can share them.

> From your earlier mail I understand that
> you have added a generic_atomic.cpp in src/system/libroot/os/arch/generic/,
> which is supposed to replace the atomic.S code from
> src/system/libroot/os/arch/arm/.

Eventually yes I understand that's the best idea - all atomic.S
replaced by a generic_atomic.cpp. I haven't discussed if I've to
reimplement all other atomic functions too. If it is fine, ARM could
use an atomic.S and generic_atomic.cpp at the same time and rewrites
could be done when required.

> The atomic functions are needed in libroot, the kernel, and the boot loader
> and need to be built for each of the three components individually. You want
> to replace the atomic.S in
>
>   src/system/libroot/os/arch/arm/Jamfile
>   src/system/kernel/lib/arch/x86/Jamfile
>   src/system/boot/Jamfile
>
> The latter is actually a bit tricky, because the Jamfile is not architecture
> dependent. It assumes that each architecture provides an atomic.S. You'll
> have to remove it there and add it to
>
>     src/system/boot/arch/<arch>/Jamfile
>
> for all architectures <arch> instead. Save for ARM where you want to use
> generic_atomic.cpp, of course.

That's quite a lot of changes if it has [minor] effects on other archs
too. But, I understand there's no escaping these changes if the
generic_atomic.cpp needs to be used. Thanks again for the help!

[1] http://paste.debian.net/hidden/c02a9470/
[2] http://paste.debian.net/hidden/157ddef9/

Other related posts: