Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r81629 - trunk/libs/context/src/asm
From: oliver.kowalke_at_[hidden]
Date: 2012-11-30 02:19:14


Author: olli
Date: 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
New Revision: 81629
URL: http://svn.boost.org/trac/boost/changeset/81629

Log:
context: fix missing _make_fcontext label for MacOSX 64bit, use dec repr. for 16byte alignment

Text files modified:
   trunk/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm | 4 ++--
   trunk/libs/context/src/asm/make_i386_ms_pe_masm.asm | 2 +-
   trunk/libs/context/src/asm/make_i386_sysv_elf_gas.S | 14 +++++++-------
   trunk/libs/context/src/asm/make_i386_sysv_macho_gas.S | 4 ++--
   trunk/libs/context/src/asm/make_ppc64_sysv_elf_gas.S | 2 +-
   trunk/libs/context/src/asm/make_x86_64_ms_pe_masm.asm | 2 +-
   trunk/libs/context/src/asm/make_x86_64_sysv_elf_gas.S | 2 +-
   trunk/libs/context/src/asm/make_x86_64_sysv_macho_gas.S | 5 +++--
   8 files changed, 18 insertions(+), 17 deletions(-)

Modified: trunk/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm
==============================================================================
--- trunk/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm (original)
+++ trunk/libs/context/src/asm/jump_x86_64_ms_pe_masm.asm 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -116,7 +116,7 @@
     lea r10, [rcx+090h]
     ; shift address in R10 to lower 16 byte boundary
     ; == pointer to SEE register block
- and r10, -0fh
+ and r10, -16
 
     movaps [r10], xmm6
     movaps [r10+010h], xmm7
@@ -136,7 +136,7 @@
     lea r10, [rdx+090h]
     ; shift address in R10 to lower 16 byte boundary
     ; == pointer to SEE register block
- and r10, -0fh
+ and r10, -16
 
     movaps xmm6, [r10]
     movaps xmm7, [r10+010h]

Modified: trunk/libs/context/src/asm/make_i386_ms_pe_masm.asm
==============================================================================
--- trunk/libs/context/src/asm/make_i386_ms_pe_masm.asm (original)
+++ trunk/libs/context/src/asm/make_i386_ms_pe_masm.asm 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -53,7 +53,7 @@
 
     ; shift address in EAX to lower 16 byte boundary
     ; == pointer to fcontext_t and address of context stack
- and eax, -0fh
+ and eax, -16
 
     mov ecx, [esp+04h] ; load 1. arg of make_fcontext, pointer to context stack (base)
     mov [eax+018h], ecx ; save address of context stack (base) in fcontext_t

Modified: trunk/libs/context/src/asm/make_i386_sysv_elf_gas.S
==============================================================================
--- trunk/libs/context/src/asm/make_i386_sysv_elf_gas.S (original)
+++ trunk/libs/context/src/asm/make_i386_sysv_elf_gas.S 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -41,7 +41,7 @@
 
     /* shift address in EAX to lower 16 byte boundary */
     /* == pointer to fcontext_t and address of context stack */
- andl $-0xf, %eax
+ andl $-16, %eax
 
     movl 0x4(%esp), %edx /* load 1. arg of make_fcontext, pointer to context stack (base) */
     movl %edx, 0x18(%eax) /* save address of context stack (base) in fcontext_t */
@@ -56,9 +56,9 @@
     leal -0x8(%eax), %edx /* reserve space for the last frame on context stack; (ESP - 0x4) % 16 == 0 */
     movl %edx, 0x10(%eax) /* save address in EDX as stack pointer for context function */
 
- call 2f
-2: popl %ecx /* address of label 2 */
- addl $finish-2b, %ecx /* compute abs address of label finish */
+ call 1f
+1: popl %ecx /* address of label 2 */
+ addl $finish-1b, %ecx /* compute abs address of label finish */
     movl %ecx, (%edx) /* save address of finish as return address for context functions */
                                        /* entered after context function returns */
 
@@ -66,9 +66,9 @@
 
 finish:
     /* ESP points to same address as ESP on entry of context function + 0x4 */
- call 3f
-3: popl %ebx /* address of label 3 */
- addl $_GLOBAL_OFFSET_TABLE_+[.-3b], %ebx /* compute address of GOT and store it in EBX */
+ call 2f
+2: popl %ebx /* address of label 3 */
+ addl $_GLOBAL_OFFSET_TABLE_+[.-2b], %ebx /* compute address of GOT and store it in EBX */
 
     xorl %eax, %eax
     movl %eax, (%esp) /* exit code is zero */

Modified: trunk/libs/context/src/asm/make_i386_sysv_macho_gas.S
==============================================================================
--- trunk/libs/context/src/asm/make_i386_sysv_macho_gas.S (original)
+++ trunk/libs/context/src/asm/make_i386_sysv_macho_gas.S 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -40,7 +40,7 @@
 
     /* shift address in EAX to lower 16 byte boundary */
     /* == pointer to fcontext_t and address of context stack */
- andl $-0xf, %eax
+ andl $-16, %eax
 
     movl 0x4(%esp), %edx /* load 1. arg of make_fcontext, pointer to context stack (base) */
     movl %edx, 0x18(%eax) /* save address of stack pointer (base) in fcontext_t */
@@ -57,7 +57,7 @@
 
     call 1f
 1: popl %ecx /* address of label 1 */
- addl $finish-2b, %ecx /* compute abs address of label finish */
+ addl $finish-1b, %ecx /* compute abs address of label finish */
     movl %ecx, (%edx) /* save address of finish as return address for context function */
                                         /* entered after context function returns */
 

Modified: trunk/libs/context/src/asm/make_ppc64_sysv_elf_gas.S
==============================================================================
--- trunk/libs/context/src/asm/make_ppc64_sysv_elf_gas.S (original)
+++ trunk/libs/context/src/asm/make_ppc64_sysv_elf_gas.S 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -99,7 +99,7 @@
 
     # call align_stack, R3 contains address at 16 byte boundary after return
     # == pointer to fcontext_t and address of context stack
- rlwinm %r3, %r3, 0, 0, 27
+ rlwinm %r3, %r3, 0, 0, 59
 
     std %r0, 184(%r3) # save address of context stack (base) in fcontext_t
     std %r4, 192(%r3) # save context stack size in fcontext_t

Modified: trunk/libs/context/src/asm/make_x86_64_ms_pe_masm.asm
==============================================================================
--- trunk/libs/context/src/asm/make_x86_64_ms_pe_masm.asm (original)
+++ trunk/libs/context/src/asm/make_x86_64_ms_pe_masm.asm 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -92,7 +92,7 @@
 
     ; shift address in RAX to lower 16 byte boundary
     ; == pointer to fcontext_t and address of context stack
- and rax, -0fh
+ and rax, -16
 
     mov [rax+048h], r8 ; save address of context function in fcontext_t
     mov [rax+058h], rdx ; save context stack size in fcontext_t

Modified: trunk/libs/context/src/asm/make_x86_64_sysv_elf_gas.S
==============================================================================
--- trunk/libs/context/src/asm/make_x86_64_sysv_elf_gas.S (original)
+++ trunk/libs/context/src/asm/make_x86_64_sysv_elf_gas.S 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -47,7 +47,7 @@
 
     /* shift address in RAX to lower 16 byte boundary */
     /* == pointer to fcontext_t and address of context stack */
- andq $-0xf, %rax
+ andq $-16, %rax
 
     movq %rdi, 0x40(%rax) /* save address of context stack pointer (base) in fcontext_t */
     movq %rsi, 0x48(%rax) /* save context stack size in fcontext_t */

Modified: trunk/libs/context/src/asm/make_x86_64_sysv_macho_gas.S
==============================================================================
--- trunk/libs/context/src/asm/make_x86_64_sysv_macho_gas.S (original)
+++ trunk/libs/context/src/asm/make_x86_64_sysv_macho_gas.S 2012-11-30 02:19:10 EST (Fri, 30 Nov 2012)
@@ -41,11 +41,12 @@
 .text
 .globl _make_fcontext
 .align 8
- leaq -0x58(%rdi), %r8 /* reserve space for fcontext_t at top of context stack */
+_make_fcontext:
+ leaq -0x58(%rdi), %r8 /* reserve space for fcontext_t at top of context stack */
 
     /* shift address in RAX to lower 16 byte boundary */
     /* == pointer to fcontext_t and address of context stack */
- andq $-0xf, %rax
+ andq $-16, %rax
 
     movq %rdi, 0x40(%rax) /* save address of stack pointer (base) in fcontext_t */
     movq %rsi, 0x48(%rax) /* save stack size in fcontext_t */


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk