whitequark
b79e7c0a9b
Rename Stack::top() to Stack::base(), which is correct.
...
Fixes #25 .
2016-08-13 13:38:04 +02:00
whitequark
7d5075edc2
Add more examples to README.
...
This also renames some functions for a mild increase in backtrace
clarity.
2016-08-13 13:38:04 +02:00
whitequark
f34ddc6805
Don't use core::intrinsics.
...
The core::intrinsics::unreachable() we used at the end of every naked
function is essentially pointless, as #[naked] implies that intrinsic
at the end of the function. rustc currently does not implement that
behavior (rust-lang/rust#32487 ), but it is a bug. On top of that,
anything except a single asm!() in naked functions is likely to be
disallowed in the future (rust-lang/rust#32490 ).
A nice side effect is that we avoid the core_intrinsics feature,
which will be never stabilized, though neither asm nor
naked_functions are likely to be stabilized soon.
2016-08-13 13:38:04 +02:00
whitequark
23cf17865d
Remove workaround for rust-lang/rust#25544 .
2016-08-13 13:38:04 +02:00
whitequark
892a7696ec
Allow unwinding to propagate across a context swap.
...
The main purpose of this is having nice backtraces in gdb, although
it also slightly simplifies poisoning state of the API consumers
after a panic.
2016-08-13 13:38:04 +02:00
whitequark
40fbfdde0c
Kill impl StackPointer.
...
That was a silly idea for a silly abstraction, and it brought no
improvement, only confusion. So, revert it.
2016-08-13 13:38:04 +02:00
edef
8c761d944f
Fix Windows x64 ABI
2016-07-17 16:57:23 -04:00
John Ericson
75ca6f66e1
Move x86 trampoline to naked function
...
Close #19
2016-07-16 16:39:19 -04:00
John Ericson
1ea4b01eda
Use mostly the same registers for consistency
...
The exception to this is %eax is used not %edi on x86 because its
caller-save
2016-07-16 16:39:14 -04:00
whitequark
cbe136b762
Completely rework fringe::Context and fringe::arch.
...
The new design concerns itself with one thing and exactly one thing:
passing values back and forth with an extern "C" function.
This allows to simplify fringe::arch into a single primitive, swap.
Close #21
2016-07-16 15:04:15 -04:00
edef
6284a22caa
add fpsr, eflags for good measure
...
courtesy of @whitequark
2016-04-16 07:41:00 +02:00
John Ericson
35fb046fb5
Factor out common code between x86 and x86_64
...
Fix #17
2016-04-14 13:37:15 +02:00
edef
daece1a8d3
Registers::{swap2 => swap}, to match Context::swap
2016-04-03 19:56:15 +02:00
edef
a50e6771b4
coerce rust_trampoline to a function pointer properly
2016-04-03 12:00:21 +02:00
edef
644cd81f9e
fix parameter passing to arch/x86_64/swap.s
2016-04-03 11:59:14 +02:00
edef
b986931817
remove copyright years
...
They're obnoxious to update, and I'm told they have no legal value.
2016-03-22 08:25:23 +01:00
edef
709dad1c4a
add Context::swap2, to allow distinct save/restore contexts
...
Fix #5
Context::swap is now implemented in terms of Context::swap2, and it
might make sense to remove Context::swap entirely at some point.
2016-03-22 07:50:50 +01:00
edef
2b23083455
get rid of some minor warnings
2016-03-22 07:35:25 +01:00
edef
bb2b92bf6b
remove feature attributes for stable stuff
2016-03-16 00:14:09 +01:00
edef
cd4fe1ecc8
remove obsolete support for Rust stack limits
...
rustc removed these in 7a3fdfbf674a08b7f6fd32c9124e52924a2f9a1c, and
this removes a Linux-specific TLS slot from our code.
2016-01-04 03:46:07 +01:00
John Ericson
a1f286bdaf
don't drop uninitialised memory when pushing to stack
2015-08-26 20:42:33 +02:00
John Ericson
96a31d2443
remove stray import
2015-08-26 20:41:12 +02:00
John Ericson
5411f10460
use Void to ensure closure diverges
2015-08-26 00:51:18 +02:00
edef
e290a8bbaf
remove `extern crate core` and prelude imports
...
the latest Rust nightly makes this unnecessary
2015-08-26 00:19:53 +02:00
edef
418c53797e
x86 support
...
ref #1
2015-04-16 13:15:46 -04:00
edef
52325b07c0
comment fix: it's 8ns *faster*
2015-04-16 12:21:39 -04:00
edef
a1e4c2b745
add Syntastic ASM lint hints
2015-04-16 11:56:45 -04:00
edef
d627f0d725
big rename — we're libfringe now
2015-04-16 08:11:12 -04:00
edef
0dd6c8bc32
pass STACK_ALIGN through without exposing it
2015-04-16 07:24:15 -04:00
edef
7adb9e7381
implement Debug for all components of Context
2015-04-16 07:24:07 -04:00
edef
519d86ca4c
implement Send where applicable
2015-04-16 07:23:57 -04:00
edef
7271fe1724
there is no point in Registers being Copy + Clone
2015-04-16 07:23:56 -04:00
edef
f7ab28de4b
move all the common arch stuff into a module of its own
2015-04-16 06:34:03 -04:00
edef
b7624aa49a
uintptr_t is pointless when usize is the same anyway
2015-04-16 06:20:46 -04:00
edef
997a4a7765
move architecture specifics into arch directory
2015-04-16 06:17:03 -04:00