Index: src/base/platform/platform-posix.cc |
diff --git a/src/base/platform/platform-posix.cc b/src/base/platform/platform-posix.cc |
index 252d213755299756dfec51a8a47fe7f48130b1a5..cb3f2bc60eeac8290cca8692900eb04b2ea60c55 100644 |
--- a/src/base/platform/platform-posix.cc |
+++ b/src/base/platform/platform-posix.cc |
@@ -148,6 +148,8 @@ int OS::ActivationFrameAlignment() { |
return 8; |
#elif V8_TARGET_ARCH_MIPS |
return 8; |
+#elif V8_TARGET_ARCH_PPC |
Sven Panne
2014/09/01 07:55:17
No need for a separate case here, just extend the
|
+ return 16; |
#else |
// Otherwise we just assume 16 byte alignment, i.e.: |
// - With gcc 4.4 the tree vectorization optimizer can generate code |
@@ -238,6 +240,14 @@ void* OS::GetRandomMmapAddr() { |
// the hint address to 46 bits to give the kernel a fighting chance of |
// fulfilling our placement request. |
raw_addr &= V8_UINT64_C(0x3ffffffff000); |
+#elif V8_TARGET_ARCH_PPC64 |
+#if V8_TARGET_ARCH_PPC_BE |
Sven Panne
2014/09/01 07:55:17
Please don't mix up the architecture and the endia
|
+ // Big-endian Linux: 44 bits of virtual addressing. |
+ raw_addr &= V8_UINT64_C(0x03fffffff000); |
+#else |
+ // Little-endian Linux: 48 bits of virtual addressing. |
+ raw_addr &= V8_UINT64_C(0x3ffffffff000); |
+#endif |
#else |
raw_addr &= 0x3ffff000; |
@@ -292,6 +302,8 @@ void OS::DebugBreak() { |
asm("break"); |
#elif V8_HOST_ARCH_MIPS64 |
asm("break"); |
+#elif V8_HOST_ARCH_PPC |
+ asm("twge 2,2"); |
#elif V8_HOST_ARCH_IA32 |
#if defined(__native_client__) |
asm("hlt"); |
@@ -604,9 +616,13 @@ void Thread::Join() { |
void Thread::YieldCPU() { |
+#if V8_TARGET_ARCH_PPC |
Sven Panne
2014/09/01 07:55:17
Huh? How is this related to the *architecture*? Do
|
+ OS::Sleep(0); |
+#else |
int result = sched_yield(); |
DCHECK_EQ(0, result); |
USE(result); |
+#endif |
} |