hrev48869 adds 4 changesets to branch 'master' old head: 5eeb4163fa05b86b46e9c3cceb980237c99cc758 new head: 91bf7d51f0dfc843d31c79dc3dc08a9c6da95179 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=91bf7d51f0df+%5E5eeb4163fa05 ---------------------------------------------------------------------------- 1592beeabdf0: build/raspberry_pi: tell gcc to generate code for armv6 Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> 2b92ac2a7009: boot/arm: enable C++14 Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> 1410ffb696f6: boot/arm: use std::atomic<> to access bcm2708 mailbox Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> 91bf7d51f0df: boot/arm: mailbox_bxm2708: add final and override specifiers Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> [ Paweł Dziepak <pdziepak@xxxxxxxxxxx> ] ---------------------------------------------------------------------------- 3 files changed, 19 insertions(+), 13 deletions(-) build/jam/board/raspberry_pi/BoardSetup | 4 +-- src/system/boot/arch/arm/Jamfile | 2 +- .../boot/arch/arm/arch_mailbox_bcm2708.cpp | 26 ++++++++++++-------- ############################################################################ Commit: 1592beeabdf0afb387d0dbf9f2f068e28efc6cf6 URL: http://cgit.haiku-os.org/haiku/commit/?id=1592beeabdf0 Author: Paweł Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Mar 6 17:58:53 2015 UTC build/raspberry_pi: tell gcc to generate code for armv6 Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/build/jam/board/raspberry_pi/BoardSetup b/build/jam/board/raspberry_pi/BoardSetup index 8de772d..eb4d118 100644 --- a/build/jam/board/raspberry_pi/BoardSetup +++ b/build/jam/board/raspberry_pi/BoardSetup @@ -46,8 +46,8 @@ HAIKU_BOARD_SDIMAGE_SIZE = 256 ; # gcc flags for the specific cpu # -HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += -mtune=arm1176jzf-s ; -HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += -mtune=arm1176jzf-s ; +HAIKU_CCFLAGS_$(HAIKU_PACKAGING_ARCH) += -mtune=arm1176jzf-s -march=armv6 ; +HAIKU_C++FLAGS_$(HAIKU_PACKAGING_ARCH) += -mtune=arm1176jzf-s -march=armv6 ; # Workaround for ld using 32k for alignment despite forcing it in the config... # should definitely not be needed! ############################################################################ Commit: 2b92ac2a70091f594950f0ed54e9b8755f4dffbf URL: http://cgit.haiku-os.org/haiku/commit/?id=2b92ac2a7009 Author: Paweł Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Mar 6 17:28:44 2015 UTC boot/arm: enable C++14 Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/system/boot/arch/arm/Jamfile b/src/system/boot/arch/arm/Jamfile index 783538e..44f7e13 100644 --- a/src/system/boot/arch/arm/Jamfile +++ b/src/system/boot/arch/arm/Jamfile @@ -9,7 +9,7 @@ UseLibraryHeaders [ FDirName libfdt ] ; defines = [ FDefines $(defines) ] ; SubDirCcFlags $(defines) ; - SubDirC++Flags $(defines) -fno-rtti ; + SubDirC++Flags $(defines) -fno-rtti -std=c++1y ; } # TODO: Is there any reason to recompile arch_string.S here? ############################################################################ Commit: 1410ffb696f63e98b6308ca92f95c68892b1cceb URL: http://cgit.haiku-os.org/haiku/commit/?id=1410ffb696f6 Author: Paweł Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Mar 6 17:47:45 2015 UTC boot/arm: use std::atomic<> to access bcm2708 mailbox Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp b/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp index 4b14f0f..a68c598 100644 --- a/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp +++ b/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp @@ -8,6 +8,7 @@ * Alexander von Gluck IV, kallisti5@xxxxxxxxxxx */ +#include <atomic> #include "arch_mailbox.h" @@ -26,6 +27,7 @@ virtual status_t Write(uint8 channel, uint32 value); virtual status_t Read(uint8 channel, uint32& value); private: + auto& GetRegister(unsigned reg); void RegisterWrite(addr_t reg, uint32 value); uint32 RegisterRead(addr_t reg); }; @@ -73,18 +75,22 @@ ArchMailboxArmBCM2708::Read(uint8 channel, uint32& value) } -uint32 +inline auto& +ArchMailboxArmBCM2708::GetRegister(unsigned reg) +{ + auto addr = fBase + ARM_CTRL_0_MAILBOX_BASE + reg; + return *reinterpret_cast<std::atomic<uint32_t>*>(addr); +} + +inline uint32 ArchMailboxArmBCM2708::RegisterRead(addr_t reg) { - uint32 result = *(volatile uint32*)(fBase + ARM_CTRL_0_MAILBOX_BASE + reg); - arch_cpu_memory_read_barrier(); - return result; + return GetRegister(reg).load(std::memory_order_acquire); } -void +inline void ArchMailboxArmBCM2708::RegisterWrite(addr_t reg, uint32 value) { - arch_cpu_memory_write_barrier(); - *(volatile uint32*)(fBase + ARM_CTRL_0_MAILBOX_BASE + reg) = value; + GetRegister(reg).store(value, std::memory_order_release); } ############################################################################ Revision: hrev48869 Commit: 91bf7d51f0dfc843d31c79dc3dc08a9c6da95179 URL: http://cgit.haiku-os.org/haiku/commit/?id=91bf7d51f0df Author: Paweł Dziepak <pdziepak@xxxxxxxxxxx> Date: Fri Mar 6 17:49:32 2015 UTC boot/arm: mailbox_bxm2708: add final and override specifiers Signed-off-by: Paweł Dziepak <pdziepak@xxxxxxxxxxx> ---------------------------------------------------------------------------- diff --git a/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp b/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp index a68c598..be90463 100644 --- a/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp +++ b/src/system/boot/arch/arm/arch_mailbox_bcm2708.cpp @@ -16,15 +16,15 @@ #include "bcm2708.h" -class ArchMailboxArmBCM2708 : public ArchMailbox { +class ArchMailboxArmBCM2708 final : public ArchMailbox { public: ArchMailboxArmBCM2708(addr_t base) : ArchMailbox(base) {} ~ArchMailboxArmBCM2708() {} -virtual status_t Write(uint8 channel, uint32 value); -virtual status_t Read(uint8 channel, uint32& value); +virtual status_t Write(uint8 channel, uint32 value) override; +virtual status_t Read(uint8 channel, uint32& value) override; private: auto& GetRegister(unsigned reg);