[haiku-commits] haiku: hrev48869 - src/system/boot/arch/arm build/jam/board/raspberry_pi

  • From: pdziepak@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 6 Mar 2015 19:05:01 +0100 (CET)

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);


Other related posts:

  • » [haiku-commits] haiku: hrev48869 - src/system/boot/arch/arm build/jam/board/raspberry_pi - pdziepak