mozilla-ppc-ipc.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Wed, 22 Jun 2011 09:02:07 +0200
changeset 283 418b5f502ff2
parent 271 0cb54f456d88
permissions -rw-r--r--
update to 5.0final enable startup notification support (bnc#701465)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
270
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     1
# HG changeset patch
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     2
# Parent f6996f95c7f8007fd7bf759092488ead6843441a
271
0cb54f456d88 meta info update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 270
diff changeset
     3
Bug 587188 - Failed to build firefox from trunk on PPC (fixed m-c)
270
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     4
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     5
diff --git a/ipc/chromium/Makefile.in b/ipc/chromium/Makefile.in
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     6
--- a/ipc/chromium/Makefile.in
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     7
+++ b/ipc/chromium/Makefile.in
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     8
@@ -241,17 +241,16 @@ CPPSRCS += \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
     9
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    10
 endif # } OS_MACOSX
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    11
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    12
 ifdef OS_LINUX # {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    13
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    14
 CPPSRCS += \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    15
   atomicops_internals_x86_gcc.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    16
   base_paths_linux.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    17
-  data_pack.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    18
   file_util_linux.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    19
   file_version_info_linux.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    20
   idle_timer_none.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    21
   process_util_linux.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    22
   time_posix.cc \
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    23
   $(NULL)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    24
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
 ifdef MOZ_ENABLE_GTK2
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
diff --git a/ipc/chromium/src/base/atomicops.h b/ipc/chromium/src/base/atomicops.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    27
--- a/ipc/chromium/src/base/atomicops.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    28
+++ b/ipc/chromium/src/base/atomicops.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    29
@@ -127,13 +127,15 @@ Atomic64 Release_Load(volatile const Ato
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    30
 #if defined(OS_WIN) && defined(COMPILER_MSVC) && defined(ARCH_CPU_X86_FAMILY)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    31
 #include "base/atomicops_internals_x86_msvc.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    32
 #elif defined(OS_MACOSX) && defined(ARCH_CPU_X86_FAMILY)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    33
 #include "base/atomicops_internals_x86_macosx.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    34
 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_X86_FAMILY)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    35
 #include "base/atomicops_internals_x86_gcc.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    36
 #elif defined(COMPILER_GCC) && defined(ARCH_CPU_ARM_FAMILY)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    37
 #include "base/atomicops_internals_arm_gcc.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    38
+//#elif defined(COMPILER_GCC) && defined(ARCH_CPU_PPC_FAMILY)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    39
+//#include "base/atomicops_internals_ppc_gcc.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
 #else
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    41
 #include "base/atomicops_internals_mutex.h"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
 #endif
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    43
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    44
 #endif  // BASE_ATOMICOPS_H_
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    45
diff --git a/ipc/chromium/src/base/atomicops_internals_ppc_gcc.h b/ipc/chromium/src/base/atomicops_internals_ppc_gcc.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    46
new file mode 100644
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    47
--- /dev/null
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    48
+++ b/ipc/chromium/src/base/atomicops_internals_ppc_gcc.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
@@ -0,0 +1,148 @@
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    50
+// Copyright (c) 2010 JJDaNiMoTh <jjdanimoth@gmail.com>. All rights reserved.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    51
+// Use of this source code is governed by a BSD-style license that can be
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    52
+// found in the LICENSE file.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    53
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    54
+// This file is an internal atomic implementation, use base/atomicops.h instead.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    55
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    56
+#ifndef BASE_ATOMICOPS_INTERNALS_PPC_GCC_H_
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    57
+#define BASE_ATOMICOPS_INTERNALS_PPC_GCC_H_
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    58
+#define ATOMICOPS_COMPILER_BARRIER() __asm__ __volatile__("" : : : "memory")
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    59
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    60
+#define PPC_ACQUIRE_BARRIER     "\nisync\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    61
+#define PPC_RELEASE_BARRIER     "\nlwsync\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    62
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    63
+namespace base {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    64
+namespace subtle {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    65
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    66
+// 32-bit low-level operations on any platform.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    67
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    68
+/*
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    69
+ * Compare and exchange - if *ptr == old, set it to new,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    70
+ * and return the old value of *p.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    71
+ */
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    72
+inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    73
+                                         Atomic32 old_value,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    74
+                                         Atomic32 new_value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    75
+	Atomic32 prev;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    76
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    77
+	__asm__ __volatile__ (
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    78
+	"1: lwarx   %0,0,%2\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    79
+	"cmpw    0,%0,%3\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    80
+	"bne-    2f\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    81
+	"stwcx.  %4,0,%2\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    82
+	"bne-    1b\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    83
+	"2:\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    84
+	: "=&r" (prev), "+m" (*ptr)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    85
+	: "r" (ptr), "r" (old_value), "r" (new_value)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    86
+	: "cc", "memory");
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    87
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    88
+	return prev;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    89
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    90
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    91
+/*
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    92
+* Atomic exchange
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    93
+*
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    94
+* Changes the memory location '*ptr' to be new_value and returns
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    95
+* the previous value stored there.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    96
+*/
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    97
+inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    98
+                                         Atomic32 new_value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    99
+        Atomic32 prev;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   100
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   101
+        __asm__ __volatile__(
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   102
+"1:     lwarx   %0,0,%2 \n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   103
+"       stwcx.  %3,0,%2 \n\
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   104
+        bne-    1b"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   105
+        : "=&r" (prev), "+m" (*ptr)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   106
+        : "r" (ptr), "r" (new_value)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   107
+        : "cc", "memory");
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   108
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   109
+        return prev;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   110
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   111
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   112
+inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   113
+                                          Atomic32 increment) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   114
+        Atomic32 temp;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   115
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   116
+        __asm__ __volatile__(
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   117
+"1:     lwarx   %0,0,%2\n\
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   118
+        add     %0,%1,%0\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   119
+"       stwcx.  %0,0,%2 \n\
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   120
+        bne-    1b"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   121
+        : "=&r" (temp)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   122
+        : "r" (increment), "r" (ptr)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   123
+        : "cc", "memory");
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   124
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   125
+        return temp;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   126
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   127
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   128
+inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   129
+                                        Atomic32 increment) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   130
+        Atomic32 temp;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   131
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   132
+        __asm__ __volatile__(
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   133
+	PPC_RELEASE_BARRIER
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   134
+"1:     lwarx   %0,0,%2\n\
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   135
+        add     %0,%1,%0\n"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   136
+"       stwcx.  %0,0,%2 \n\
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   137
+        bne-    1b"
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   138
+        PPC_ACQUIRE_BARRIER
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   139
+        : "=&r" (temp)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   140
+        : "r" (increment), "r" (ptr)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   141
+        : "cc", "memory");
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   142
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   143
+        return temp;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   144
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   145
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   146
+inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   147
+                                       Atomic32 old_value,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   148
+                                       Atomic32 new_value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   149
+  return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   150
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   151
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   152
+inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   153
+                                       Atomic32 old_value,
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   154
+                                       Atomic32 new_value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   155
+  return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   156
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   157
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   158
+inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   159
+  *ptr = value;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   160
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   161
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   162
+inline void MemoryBarrier() {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   163
+  __asm__ __volatile__("sync" : : : "memory");
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   164
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   165
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   166
+inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   167
+  *ptr = value;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   168
+  MemoryBarrier();
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   169
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   170
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   171
+inline void Release_Store(volatile Atomic32* ptr, Atomic32 value) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   172
+  MemoryBarrier();
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   173
+  *ptr = value;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   174
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   175
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   176
+inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   177
+  return *ptr;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   178
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   179
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   180
+inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   181
+  Atomic32 value = *ptr;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   182
+  MemoryBarrier();
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   183
+  return value;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   184
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   185
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   186
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   187
+inline Atomic32 Release_Load(volatile const Atomic32* ptr) {
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   188
+  MemoryBarrier();
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   189
+  return *ptr;
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   190
+}
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   191
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   192
+} // namespace base::subtle
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   193
+} // namespace base
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   194
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   195
+#undef ATOMICOPS_COMPILER_BARRIER
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   196
+
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   197
+#endif  // BASE_ATOMICOPS_INTERNALS_PPC_GCC_H_
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   198
diff --git a/ipc/chromium/src/build/build_config.h b/ipc/chromium/src/build/build_config.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   199
--- a/ipc/chromium/src/build/build_config.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   200
+++ b/ipc/chromium/src/build/build_config.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   201
@@ -52,19 +52,20 @@
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   202
 #define ARCH_CPU_X86_FAMILY 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   203
 #define ARCH_CPU_X86 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   204
 #define ARCH_CPU_32_BITS 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   205
 #elif defined(__ARMEL__)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   206
 #define ARCH_CPU_ARM_FAMILY 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   207
 #define ARCH_CPU_ARMEL 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   208
 #define ARCH_CPU_32_BITS 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   209
 #define WCHAR_T_IS_UNSIGNED 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   210
-#elif defined(__ppc__)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   211
+#elif defined(__ppc__) || defined(__powerpc) || defined(__PPC__)
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   212
 #define ARCH_CPU_PPC 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   213
 #define ARCH_CPU_32_BITS 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   214
+#define ARCH_CPU_PPC_FAMILY 1
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   215
 #else
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   216
 #error Please add support for your architecture in build/build_config.h
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   217
 #endif
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   218
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   219
 // Type detection for wchar_t.
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   220
 #ifndef CHROMIUM_MOZILLA_BUILD
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   221
 
785d28fc6d4d fix PPC build
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   222
 #if defined(OS_WIN)