8fb76ee717
bulk of the porting work. Tested on SmartOS 32-bit. 64-bit builds currently fail, they should hopefully be fixed soon.
45 lines
1.3 KiB
Text
45 lines
1.3 KiB
Text
$NetBSD: patch-bi,v 1.4 2013/06/15 09:31:05 jperkin Exp $
|
|
|
|
DragonFly support.
|
|
|
|
--- hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp.orig 2012-08-10 16:24:31.000000000 +0000
|
|
+++ hotspot/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
|
|
@@ -94,7 +94,7 @@
|
|
#define SPELL_REG_FP "ebp"
|
|
#endif // AMD64
|
|
|
|
-#ifdef __FreeBSD__
|
|
+#if defined(__FreeBSD__) || defined(__DragonFly__)
|
|
# define context_trapno uc_mcontext.mc_trapno
|
|
# ifdef AMD64
|
|
# define context_pc uc_mcontext.mc_rip
|
|
@@ -279,13 +279,8 @@ address os::current_stack_pointer() {
|
|
register void *esp;
|
|
__asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp));
|
|
return (address) esp;
|
|
-#elif defined(SPARC_WORKS)
|
|
- register void *esp;
|
|
- __asm__("mov %%"SPELL_REG_SP", %0":"=r"(esp));
|
|
- return (address) ((char*)esp + sizeof(long)*2);
|
|
#else
|
|
- register void *esp __asm__ (SPELL_REG_SP);
|
|
- return (address) esp;
|
|
+ return (address)__builtin_frame_address(0);
|
|
#endif
|
|
}
|
|
|
|
@@ -362,13 +357,7 @@ frame os::get_sender_for_C_frame(frame*
|
|
}
|
|
|
|
intptr_t* _get_previous_fp() {
|
|
-#if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__)
|
|
- register intptr_t **ebp;
|
|
- __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp));
|
|
-#else
|
|
- register intptr_t **ebp __asm__ (SPELL_REG_FP);
|
|
-#endif
|
|
- return (intptr_t*) *ebp; // we want what it points to.
|
|
+ return (intptr_t *)__builtin_frame_address(1);
|
|
}
|
|
|
|
|