|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r82626 - in branches/release: boost/context boost/context/detail libs/context libs/context/build libs/context/config libs/context/doc libs/context/src/asm
From: oliver.kowalke_at_[hidden]
Date: 2013-01-26 19:25:36
Author: olli
Date: 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
New Revision: 82626
URL: http://svn.boost.org/trac/boost/changeset/82626
Log:
context: revert support for SPARC
Removed:
branches/release/boost/context/detail/fcontext_sparc.hpp
branches/release/libs/context/config/sparc.cpp
branches/release/libs/context/src/asm/jump_sparc64_sysv_elf_gas.S
branches/release/libs/context/src/asm/jump_sparc_sysv_elf_gas.S
branches/release/libs/context/src/asm/make_sparc64_sysv_elf_gas.S
branches/release/libs/context/src/asm/make_sparc_sysv_elf_gas.S
Properties modified:
branches/release/boost/context/ (props changed)
branches/release/libs/context/ (props changed)
Text files modified:
branches/release/boost/context/fcontext.hpp | 3 --
branches/release/libs/context/build/Jamfile.v2 | 49 +++++----------------------------------
branches/release/libs/context/build/architecture.jam | 16 ++++--------
branches/release/libs/context/config/Jamfile.jam | 7 ++---
branches/release/libs/context/doc/Jamfile.v2 | 3 ++
branches/release/libs/context/doc/acknowledgements.qbk | 6 ++--
branches/release/libs/context/doc/fcontext.qbk | 2
7 files changed, 23 insertions(+), 63 deletions(-)
Deleted: branches/release/boost/context/detail/fcontext_sparc.hpp
==============================================================================
--- branches/release/boost/context/detail/fcontext_sparc.hpp 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,90 +0,0 @@
-// Copyright Martin Husemann 2012
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_CTX_DETAIL_FCONTEXT_SPARC_H
-#define BOOST_CTX_DETAIL_FCONTEXT_SPARC_H
-
-#include <cstddef>
-
-#include <boost/config.hpp>
-#include <boost/cstdint.hpp>
-
-#include <boost/context/detail/config.hpp>
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_PREFIX
-#endif
-
-namespace boost {
-namespace context {
-
-extern "C" {
-
-#define BOOST_CONTEXT_CALLDECL
-
-// if defined(_LP64) we are compiling for sparc64, otherwise it is 32 bit
-// sparc.
-
-
-struct stack_t
-{
- void * sp;
- std::size_t size;
-
- stack_t() :
- sp( 0), size( 0)
- {}
-};
-
-struct fp_t
-{
-#ifdef _LP64
- boost::uint64_t fp_freg[32];
- boost::uint64_t fp_fprs, fp_fsr;
-#else
- boost::uint64_t fp_freg[16];
- boost::uint32_t fp_fsr;
-#endif
-
- fp_t() :
- fp_freg(),
-#ifdef _LP64
- fp_fprs(),
-#endif
- fp_fsr()
- {}
-}
-#ifdef _LP64
- __attribute__((__aligned__(64))) // allow VIS instructions to be used
-#endif
-;
-
-struct fcontext_t
-{
- fp_t fc_fp; // fpu stuff first, for easier alignement
-#ifdef _LP64
- boost::uint64_t
-#else
- boost::uint32_t
-#endif
- fc_greg[8];
- stack_t fc_stack;
-
- fcontext_t() :
- fc_fp(),
- fc_greg(),
- fc_stack()
- {}
-};
-
-}
-
-}}
-
-#ifdef BOOST_HAS_ABI_HEADERS
-# include BOOST_ABI_SUFFIX
-#endif
-
-#endif // BOOST_CTX_DETAIL_FCONTEXT_SPARC_H
Modified: branches/release/boost/context/fcontext.hpp
==============================================================================
--- branches/release/boost/context/fcontext.hpp (original)
+++ branches/release/boost/context/fcontext.hpp 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -59,9 +59,6 @@
|| defined(__ppc__) || defined(_ARCH_PPC) || defined(__POWERPC__) \
|| defined(__PPCGECKO__) || defined(__PPCBROADWAY) || defined(_XENON)
# include <boost/context/detail/fcontext_ppc.hpp>
-#elif defined(__sparc__) || defined(__sparc)
-// sparc or sparc64
-# include <boost/context/detail/fcontext_sparc.hpp>
#else
# error "platform not supported"
#endif
Modified: branches/release/libs/context/build/Jamfile.v2
==============================================================================
--- branches/release/libs/context/build/Jamfile.v2 (original)
+++ branches/release/libs/context/build/Jamfile.v2 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -17,7 +17,8 @@
project boost/context
: source-location ../src
: requirements
- <os>SOLARIS:<define>_XOPEN_SOURCE=600
+ <os>SOLARIS:<define>_XOPEN_SOURCE=1
+ <os>SOLARIS:<define>_XOPEN_SOURCE_EXTENDED=1
: usage-requirements
<link>shared:<define>BOOST_CONTEXT_DYN_LINK=1
;
@@ -69,7 +70,7 @@
actions armasm
{
- armasm "$(>)" "$(<)"
+ armasm "$(<)" "$(>)"
}
actions masm
@@ -137,7 +138,7 @@
<binary-format>elf
;
-# MIPS
+# MIPS 32bit
alias asm_context_sources
: asm/make_mips32_o32_elf_gas.S
asm/jump_mips32_o32_elf_gas.S
@@ -161,7 +162,7 @@
<binary-format>elf
;
-# POWERPC
+# POWERPC 32bit
alias asm_context_sources
: asm/make_ppc32_sysv_elf_gas.S
asm/jump_ppc32_sysv_elf_gas.S
@@ -188,7 +189,7 @@
<binary-format>elf
;
-# POWERPC_64
+# POWERPC 64bit
alias asm_context_sources
: asm/make_ppc64_sysv_elf_gas.S
asm/jump_ppc64_sysv_elf_gas.S
@@ -215,43 +216,7 @@
<binary-format>elf
;
-# SPARC
-alias asm_context_sources
- : asm/make_sparc_sysv_elf_gas.S
- asm/jump_sparc_sysv_elf_gas.S
- : <address-model>32
- <architecture>sparc
- <binary-format>elf
- <toolset>gcc
- ;
-
-alias asm_context_sources
- : [ make asm/make_sparc_sysv_elf_gas.o : asm/make_sparc_sysv_elf_gas.S : @gas ]
- [ make asm/jump_sparc_sysv_elf_gas.o : asm/jump_sparc_sysv_elf_gas.S : @gas ]
- : <address-model>32
- <architecture>sparc
- <binary-format>elf
- ;
-
-# SPARC_64
-alias asm_context_sources
- : asm/make_sparc64_sysv_elf_gas.S
- asm/jump_sparc64_sysv_elf_gas.S
- : <address-model>64
- <architecture>sparc
- <binary-format>elf
- <toolset>gcc
- ;
-
-alias asm_context_sources
- : [ make asm/make_sparc64_sysv_elf_gas.o : asm/make_sparc64_sysv_elf_gas.S : @gas ]
- [ make asm/jump_sparc64_sysv_elf_gas.o : asm/jump_sparc64_sysv_elf_gas.S : @gas ]
- : <address-model>64
- <architecture>sparc
- <binary-format>elf
- ;
-
-# X86
+# I386
alias asm_context_sources
: asm/make_i386_sysv_elf_gas.S
asm/jump_i386_sysv_elf_gas.S
Modified: branches/release/libs/context/build/architecture.jam
==============================================================================
--- branches/release/libs/context/build/architecture.jam (original)
+++ branches/release/libs/context/build/architecture.jam 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -51,25 +51,21 @@
}
else
{
- if [ configure.builds /boost/architecture//arm : $(properties) : arm ]
+ if [ configure.builds /boost/architecture//x86 : $(properties) : x86 ]
{
- return <architecture>arm ;
- }
- else if [ configure.builds /boost/architecture//mips1 : $(properties) : mips1 ]
- {
- return <architecture>mips1 ;
+ return <architecture>x86 ;
}
else if [ configure.builds /boost/architecture//power : $(properties) : power ]
{
return <architecture>power ;
}
- else if [ configure.builds /boost/architecture//sparc : $(properties) : sparc ]
+ else if [ configure.builds /boost/architecture//arm : $(properties) : arm ]
{
- return <architecture>sparc ;
+ return <architecture>arm ;
}
- else if [ configure.builds /boost/architecture//x86 : $(properties) : x86 ]
+ else if [ configure.builds /boost/architecture//mips1 : $(properties) : mips1 ]
{
- return <architecture>x86 ;
+ return <architecture>mips1 ;
}
}
}
Modified: branches/release/libs/context/config/Jamfile.jam
==============================================================================
--- branches/release/libs/context/config/Jamfile.jam (original)
+++ branches/release/libs/context/config/Jamfile.jam 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -11,8 +11,7 @@
obj 32 : 32.cpp ;
obj 64 : 64.cpp ;
-obj arm : arm.cpp ;
-obj mips1 : mips1.cpp ;
obj power : power.cpp ;
-obj sparc : sparc.cpp ;
-obj x86 : x86.cpp ;
+obj x86 : x86.cpp ;
+obj mips1 : mips1.cpp ;
+obj arm : arm.cpp ;
Deleted: branches/release/libs/context/config/sparc.cpp
==============================================================================
--- branches/release/libs/context/config/sparc.cpp 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,11 +0,0 @@
-// power.cpp
-//
-// Copyright (c) 2012 Steven Watanabe
-//
-// Distributed under the Boost Software License Version 1.0. (See
-// accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#if !defined(__sparc__) && !defined(__sparc)
-#error "Not SPARC"
-#endif
Modified: branches/release/libs/context/doc/Jamfile.v2
==============================================================================
--- branches/release/libs/context/doc/Jamfile.v2 (original)
+++ branches/release/libs/context/doc/Jamfile.v2 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -3,6 +3,9 @@
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+using boostbook ;
+using quickbook ;
+
xml context : context.qbk ;
boostbook standalone
Modified: branches/release/libs/context/doc/acknowledgements.qbk
==============================================================================
--- branches/release/libs/context/doc/acknowledgements.qbk (original)
+++ branches/release/libs/context/doc/acknowledgements.qbk 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -9,8 +9,8 @@
I'd like to thank Adreas Fett, Artyom Beilis, Daniel Larimer, David Deakins,
Fernando Pelliccioni, Giovanni Piero Deretta, Gordon Woodhull, Helge Bahmann,
-Holger Grund, Jeffrey Lee Hellrung (Jr.), Keith Jeffery, Martin Husemann,
-Phil Endecott, Robert Stewart, Sergey Cheban, Steven Watanabe,
-Vicente J. Botet Escriba, Wayne Piekarski.
+Holger Grund, Jeffrey Lee Hellrung (Jr.), Keith Jeffery, Phil Endecott,
+Robert Stewart, Sergey Cheban, Steven Watanabe, Vicente J. Botet Escriba,
+Wayne Piekarski.
[endsect]
Modified: branches/release/libs/context/doc/fcontext.qbk
==============================================================================
--- branches/release/libs/context/doc/fcontext.qbk (original)
+++ branches/release/libs/context/doc/fcontext.qbk 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
@@ -177,7 +177,7 @@
Preserving the floating point registers increases the cycle count for a context
switch (see performance tests).
-The fourth argument of __jump_fcontext__ controls if fpu registers should be
+The fourth argument of __jump_fcontext__ controls if fpu registers should be
preserved by the context jump.
[important The use of the fpu controlling argument of __jump_fcontext__ must
Deleted: branches/release/libs/context/src/asm/jump_sparc64_sysv_elf_gas.S
==============================================================================
--- branches/release/libs/context/src/asm/jump_sparc64_sysv_elf_gas.S 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,136 +0,0 @@
-/*
- Copyright Martin Husemann 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | Offset (in 4 or 8 byte units) | Content | *
- * ------------------------------------------------------------- *
- * | 0 | %sp | *
- * ------------------------------------------------------------- *
- * | 1 | %pc | *
- * ------------------------------------------------------------- *
- * | 2 | %i7 (return address) | *
- * ------------------------------------------------------------- *
- * | 3 | %g1 | *
- * ------------------------------------------------------------- *
- * | 4 | %g2 | *
- * ------------------------------------------------------------- *
- * | 5 | %g3 | *
- * ------------------------------------------------------------- *
- * | 6 | %g6 | *
- * ------------------------------------------------------------- *
- * | 7 | %g7 | *
- * ------------------------------------------------------------- *
- * The local and in registers are stored on the stack. *
- *******************************************************************/
-
-#define OFF(N) (8*(N))
-#define CCFSZ 176 // C Compiler Frame Size
-#define BIAS (2048-1) // Stack offset for 64 bit programs
-#define FC_SZ 448 // sizeof(fcontext_t)
-#define FC_STK 384 // offsetof(fcontext_t, fc_stack)
-#define FC_FPU 0 // offsetof(fcontext_t, fc_fp)
-#define FC_FSR 264 // offsetof(fcontext_t, fc_fp.fp_fsr)
-#define FC_FPRS 256 // offsetof(fcontext_t, fc_fp.fp_fprs)
-#define FC_GREG 320 // offsetof(fcontext_t, fc_greg)
-#define BLOCK_SIZE 64
-
- .register %g2,#ignore
- .register %g3,#ignore
- .register %g6,#ignore
-
-.text
-.globl jump_fcontext
-.align 4
-.type jump_fcontext,@function
-// intptr_t
-// jump_fcontext( fcontext_t * ofc, fcontext_t const* nfc, intptr_t vp,
-// bool preserve_fpu = true);
-jump_fcontext:
- // %o0 = pointer to old fcontext, save current state here
- // %o1 = new context to jump to
- // %o2 = new return value in context %o0
- // %o3 = preserve fpu registers
- // Save current state in %o0 fcontext, then activate %o1.
- // If %o3, include fpu registers.
-
- flushw // make sure all shadow registers are up to date in the current stack
-
- // save current state to fcontext_t at %o0
- stx %sp, [%o0 + FC_GREG + OFF(0)] // current stack pointer
- add %o7, 8, %o4 // calculate next instruction past call
- stx %o4, [%o0 + FC_GREG + OFF(1)] // and store it as %pc in save context
- stx %o7, [%o0 + FC_GREG + OFF(2)]
- stx %g1, [%o0 + FC_GREG + OFF(3)]
- stx %g2, [%o0 + FC_GREG + OFF(4)]
- stx %g3, [%o0 + FC_GREG + OFF(5)]
- stx %g6, [%o0 + FC_GREG + OFF(6)]
- stx %g7, [%o0 + FC_GREG + OFF(7)]
-
- // do we need to handle fpu?
- brz %o3, Lno_fpu
- nop
-
- add %o0, FC_FPU, %o5
- stda %f0, [%o5] 0xf0 /* ASI_BLOCK_PRIMARY */
- add %o5, BLOCK_SIZE, %o5
- stda %f16, [%o5] 0xf0
- add %o5, BLOCK_SIZE, %o5
- stda %f32, [%o5] 0xf0
- add %o5, BLOCK_SIZE, %o5
- stda %f48, [%o5] 0xf0
- stx %fsr, [%o0+FC_FSR]
- rd %fprs, %o4
- stx %o4, [%o0+FC_FPRS]
-
- add %o1, FC_FPU, %o5
- ldda [%o5] 0xf0 /* ASI_BLOCK_PRIMARY */, %f0
- add %o5, BLOCK_SIZE, %o5
- ldda [%o5] 0xf0, %f16
- add %o5, BLOCK_SIZE, %o5
- ldda [%o5] 0xf0, %f32
- add %o5, BLOCK_SIZE, %o5
- ldda [%o5] 0xf0, %f48
- ldx [%o1+FC_FSR], %fsr
- ldx [%o1+FC_FPRS], %o4
- wr %o4,0,%fprs
-
-Lno_fpu:
- // load new state from %o1
- ldx [%o1 + FC_GREG + OFF(1)], %o4
- ldx [%o1 + FC_GREG + OFF(2)], %o7
- ldx [%o1 + FC_GREG + OFF(3)], %g1
- ldx [%o1 + FC_GREG + OFF(4)], %g2
- ldx [%o1 + FC_GREG + OFF(5)], %g3
- ldx [%o1 + FC_GREG + OFF(6)], %g6
- ldx [%o1 + FC_GREG + OFF(7)], %g7
- // switch to new stack
- ldx [%o1 + FC_GREG + OFF(0)], %sp
- // and now reload from this stack the shadow regist bank contents
- ldx [%sp + BIAS + OFF(0)], %l0
- ldx [%sp + BIAS + OFF(1)], %l1
- ldx [%sp + BIAS + OFF(2)], %l2
- ldx [%sp + BIAS + OFF(3)], %l3
- ldx [%sp + BIAS + OFF(4)], %l4
- ldx [%sp + BIAS + OFF(5)], %l5
- ldx [%sp + BIAS + OFF(6)], %l6
- ldx [%sp + BIAS + OFF(7)], %l7
- ldx [%sp + BIAS + OFF(8)], %i0
- ldx [%sp + BIAS + OFF(9)], %i1
- ldx [%sp + BIAS + OFF(10)], %i2
- ldx [%sp + BIAS + OFF(11)], %i3
- ldx [%sp + BIAS + OFF(12)], %i4
- ldx [%sp + BIAS + OFF(13)], %i5
- ldx [%sp + BIAS + OFF(14)], %i6
- ldx [%sp + BIAS + OFF(15)], %i7
-
- // finally continue execution in new context
- jmp %o4
- mov %o2, %o0 // return arg as result
-
-.size jump_fcontext,.-jump_fcontext
Deleted: branches/release/libs/context/src/asm/jump_sparc_sysv_elf_gas.S
==============================================================================
--- branches/release/libs/context/src/asm/jump_sparc_sysv_elf_gas.S 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,132 +0,0 @@
-/*
- Copyright Martin Husemann 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | Offset (in 4 or 8 byte units) | Content | *
- * ------------------------------------------------------------- *
- * | 0 | %sp | *
- * ------------------------------------------------------------- *
- * | 1 | %pc | *
- * ------------------------------------------------------------- *
- * | 2 | %i7 (return address) | *
- * ------------------------------------------------------------- *
- * | 3 | %g1 | *
- * ------------------------------------------------------------- *
- * | 4 | %g2 | *
- * ------------------------------------------------------------- *
- * | 5 | %g3 | *
- * ------------------------------------------------------------- *
- * | 6 | %g6 | *
- * ------------------------------------------------------------- *
- * | 7 | %g7 | *
- * ------------------------------------------------------------- *
- * The local and in registers are stored on the stack. *
- *******************************************************************/
-
-#define OFF(N) (4*(N))
-#define CCFSZ 96
-#define FC_SZ 176
-#define FC_stK 168 // offsetof(fcontext_t, fc_stack)
-#define FC_FPU 0 // offsetof(fcontext_t, fc_fp)
-#define FC_FSR 128 // offsetof(fcontext_t, fc_fp.fp_fsr)
-#define FC_GREG 136 // offsetof(fcontext_t, fc_greg)
-#define BLOCK_SIZE 8
-#ifdef __NetBSD__
-#define FLUSHW t 0x83; nop // T_FLUSHWIN
-#endif
-
-.text
-.globl jump_fcontext
-.align 4
-.type jump_fcontext,@function
-// intptr_t
-// jump_fcontext( fcontext_t * ofc, fcontext_t const* nfc, intptr_t vp,
-// bool preserve_fpu = true);
-jump_fcontext:
- // %o0 = pointer to old fcontext, save current state here
- // %o1 = new context to jump to
- // %o2 = new return value in context %o0
- // %o3 = preserve fpu registers
- // Save current state in %o0 fcontext, then activate %o1.
- // If %o3, include fpu registers.
-
- FLUSHW // make sure all shadow registers are up to date in the current stack
-
- // save current state to fcontext_t at %o0
- st %sp, [%o0 + FC_GREG + OFF(0)] // current stack pointer
- add %o7, 8, %o4 // calculate next instruction past call
- st %o4, [%o0 + FC_GREG + OFF(1)] // and store it as %pc in save context
- st %o7, [%o0 + FC_GREG + OFF(2)]
- st %g1, [%o0 + FC_GREG + OFF(3)]
- st %g2, [%o0 + FC_GREG + OFF(4)]
- st %g3, [%o0 + FC_GREG + OFF(5)]
- st %g6, [%o0 + FC_GREG + OFF(6)]
- st %g7, [%o0 + FC_GREG + OFF(7)]
-
- // do we need to handle fpu?
- cmp %o3, 0
- bz Lno_fpu
- nop
-
- add %o0, FC_FPU, %o5
- std %f0, [%o5]
- std %f2, [%o5+0x08]
- std %f4, [%o5+0x10]
- std %f6, [%o5+0x18]
- std %f8, [%o5+0x20]
- std %f10, [%o5+0x28]
- std %f12, [%o5+0x30]
- std %f14, [%o5+0x38]
- st %fsr, [%o0+FC_FSR]
-
- add %o1, FC_FPU, %o5
- ldd [%o5], %f0
- ldd [%o5+0x08], %f2
- ldd [%o5+0x10], %f4
- ldd [%o5+0x18], %f6
- ldd [%o5+0x20], %f8
- ldd [%o5+0x28], %f10
- ldd [%o5+0x30], %f12
- ldd [%o5+0x38], %f14
- ld [%o1+FC_FSR], %fsr
-
-Lno_fpu:
- // load new state from %o1
- ld [%o1 + FC_GREG + OFF(1)], %o4
- ld [%o1 + FC_GREG + OFF(2)], %o7
- ld [%o1 + FC_GREG + OFF(3)], %g1
- ld [%o1 + FC_GREG + OFF(4)], %g2
- ld [%o1 + FC_GREG + OFF(5)], %g3
- ld [%o1 + FC_GREG + OFF(6)], %g6
- ld [%o1 + FC_GREG + OFF(7)], %g7
- // switch to new stack
- ld [%o1 + FC_GREG + OFF(0)], %sp
- // and now reload from this stack the shadow regist bank contents
- ld [%sp + OFF(0)], %l0
- ld [%sp + OFF(1)], %l1
- ld [%sp + OFF(2)], %l2
- ld [%sp + OFF(3)], %l3
- ld [%sp + OFF(4)], %l4
- ld [%sp + OFF(5)], %l5
- ld [%sp + OFF(6)], %l6
- ld [%sp + OFF(7)], %l7
- ld [%sp + OFF(8)], %i0
- ld [%sp + OFF(9)], %i1
- ld [%sp + OFF(10)], %i2
- ld [%sp + OFF(11)], %i3
- ld [%sp + OFF(12)], %i4
- ld [%sp + OFF(13)], %i5
- ld [%sp + OFF(14)], %i6
- ld [%sp + OFF(15)], %i7
-
- // finally continue execution in new context
- jmp %o4
- mov %o2, %o0 // return arg as result
-
-.size jump_fcontext,.-jump_fcontext
Deleted: branches/release/libs/context/src/asm/make_sparc64_sysv_elf_gas.S
==============================================================================
--- branches/release/libs/context/src/asm/make_sparc64_sysv_elf_gas.S 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,86 +0,0 @@
-/*
- Copyright Martin Husemann 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | Offset (in 4 or 8 byte units) | Content | *
- * ------------------------------------------------------------- *
- * | 0 | %sp | *
- * ------------------------------------------------------------- *
- * | 1 | %pc | *
- * ------------------------------------------------------------- *
- * | 2 | %i7 (return address) | *
- * ------------------------------------------------------------- *
- * | 3 | %g1 | *
- * ------------------------------------------------------------- *
- * | 4 | %g2 | *
- * ------------------------------------------------------------- *
- * | 5 | %g3 | *
- * ------------------------------------------------------------- *
- * | 6 | %g6 | *
- * ------------------------------------------------------------- *
- * | 7 | %g7 | *
- * ------------------------------------------------------------- *
- * The local and in registers are stored on the stack. *
- *******************************************************************/
-
-#define OFF(N) (8*(N))
-#define CCFSZ 176 // C Compiler Frame Size
-#define BIAS (2048-1) // Stack offset for 64 bit programs
-#define FC_SZ 448 // sizeof(fcontext_t)
-#define FC_STK 384 // offsetof(fcontext_t, fc_stack)
-#define FC_FPU 0 // offsetof(fcontext_t, fc_fp)
-#define FC_FSR 264 // offsetof(fcontext_t, fc_fp.fp_fsr)
-#define FC_FPRS 256 // offsetof(fcontext_t, fc_fp.fp_fprs)
-#define FC_GREG 320 // offsetof(fcontext_t, fc_greg)
-#define BLOCK_SIZE 64
-
- .register %g2,#ignore
- .register %g3,#ignore
- .register %g6,#ignore
-
-.text
-.globl make_fcontext
-.align 4
-.type make_fcontext,@function
-// fcontext_t *
-// make_fcontext( void * sp, std::size_t size, void (* fn)( intptr_t) )
-make_fcontext:
- save %sp, -CCFSZ, %sp
- // %i0 initial stack pointer
- // %i1 stack size limit
- // %i2 function pointer for context start function
-
- sub %i0, FC_SZ, %i4 // allocate fcontext_t at on the new stack and keep pointer as return value
- andn %i4, BLOCK_SIZE-1, %i5 // force block ops usable alignement and keep pointer to fcontext in %i5
-
- stx %i0, [%i5+FC_STK+OFF(0)] // save fs_stack.sp
- stx %i1, [%i5+FC_STK+OFF(1)] // save fs_stack.size
- sub %i5, CCFSZ+BIAS, %o1 // leave space for one register window (and offset stack for 64bit)
- stx %o1, [%i5+FC_GREG+OFF(0)] // save new stack pointer
- stx %i2, [%i5+FC_GREG+OFF(1)] // save new %pc (function pointer)
- stx %g1, [%i5+FC_GREG+OFF(3)]
- stx %g2, [%i5+FC_GREG+OFF(4)]
- stx %g3, [%i5+FC_GREG+OFF(5)]
- stx %g6, [%i5+FC_GREG+OFF(6)]
- stx %g7, [%i5+FC_GREG+OFF(7)]
-
- // synthesize "return address": jump to finish
-1: rd %pc, %i4
- add %i4, finish-1b-8, %i4
- stx %i4, [%i5+FC_GREG+OFF(2)]
-
- ret
- restore %g0, %i5, %o0 // return fcontext_t
-
-finish:
- mov %g0, %o0
- call _exit
- nop
-
-.size make_fcontext,.-make_fcontext
Deleted: branches/release/libs/context/src/asm/make_sparc_sysv_elf_gas.S
==============================================================================
--- branches/release/libs/context/src/asm/make_sparc_sysv_elf_gas.S 2013-01-26 19:25:34 EST (Sat, 26 Jan 2013)
+++ (empty file)
@@ -1,82 +0,0 @@
-/*
- Copyright Martin Husemann 2013.
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENSE_1_0.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-/*******************************************************************
- * *
- * ------------------------------------------------------------- *
- * | Offset (in 4 or 8 byte units) | Content | *
- * ------------------------------------------------------------- *
- * | 0 | %sp | *
- * ------------------------------------------------------------- *
- * | 1 | %pc | *
- * ------------------------------------------------------------- *
- * | 2 | %i7 (return address) | *
- * ------------------------------------------------------------- *
- * | 3 | %g1 | *
- * ------------------------------------------------------------- *
- * | 4 | %g2 | *
- * ------------------------------------------------------------- *
- * | 5 | %g3 | *
- * ------------------------------------------------------------- *
- * | 6 | %g6 | *
- * ------------------------------------------------------------- *
- * | 7 | %g7 | *
- * ------------------------------------------------------------- *
- * The local and in registers are stored on the stack. *
- *******************************************************************/
-
-#define OFF(N) (4*(N))
-#define CCFSZ 96
-#define FC_SZ 176
-#define FC_stK 168 // offsetof(fcontext_t, fc_stack)
-#define FC_FPU 0 // offsetof(fcontext_t, fc_fp)
-#define FC_FSR 128 // offsetof(fcontext_t, fc_fp.fp_fsr)
-#define FC_GREG 136 // offsetof(fcontext_t, fc_greg)
-#define BLOCK_SIZE 8
-
-.text
-.globl make_fcontext
-.align 4
-.type make_fcontext,@function
-// fcontext_t *
-// make_fcontext( void * sp, std::size_t size, void (* fn)( intptr_t) )
-make_fcontext:
- save %sp, -CCFSZ, %sp
- // %i0 initial stack pointer
- // %i1 stack size limit
- // %i2 function pointer for context start function
-
- sub %i0, FC_SZ, %i4 // allocate fcontext_t at on the new stack and keep pointer as return value
- andn %i4, BLOCK_SIZE-1, %i5 // force block ops usable alignement and keep pointer to fcontext in %i5
-
- st %i0, [%i5+FC_stK+OFF(0)] // save fs_stack.sp
- st %i1, [%i5+FC_stK+OFF(1)] // save fs_stack.size
- sub %i5, CCFSZ, %o1 // leave space for one register window
- st %o1, [%i5+FC_GREG+OFF(0)] // save new stack pointer
- st %i2, [%i5+FC_GREG+OFF(1)] // save new %pc (function pointer)
- st %g1, [%i5+FC_GREG+OFF(3)]
- st %g2, [%i5+FC_GREG+OFF(4)]
- st %g3, [%i5+FC_GREG+OFF(5)]
- st %g6, [%i5+FC_GREG+OFF(6)]
- st %g7, [%i5+FC_GREG+OFF(7)]
-
- // synthesize "return address": jump to finish
- mov %i7, %l0
-2: call 3f
- nop
-3: add finish-2b-8, %o7, %i4
- st %i4, [%i5+FC_GREG+OFF(2)]
-
- ret
- restore %g0, %i5, %o0 // return fcontext_t
-
-finish:
- mov %g0, %o0
- call _exit
- nop
-
-.size make_fcontext,.-make_fcontext
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