edef
04bbeb88f4
add valgrind_stack_change
...
Unlike valgrind_stack_register, this won't automatically swap
if `start > end`. It's probably wiser to pretend it doesn't swap at all.
2015-04-15 22:45:50 -04:00
edef
476a63b817
move the Valgrind doc-comments to Rust-land, where they actually matter
2015-04-15 22:41:34 -04:00
edef
14887b4dd0
Valgrind doesn't actually care about the order
2015-04-15 22:40:16 -04:00
edef
9cbb2819ca
match the internal Valgrind function names to the macro names
2015-04-15 22:30:07 -04:00
edef
db6a2ff89b
factor Valgrind support out and expose it
...
Now other Stack / StackSource implementations can use the same Valgrind
code. Ref #3 .
2015-04-15 22:25:52 -04:00
edef
904da1a1c8
use Rust types for Valgrind, and use u32 for stack IDs
2015-04-15 22:22:02 -04:00
edef
c19fc4625a
use a statically-allocated stack for Context::new benchmarking
...
Now it's an actual context creation benchmark, instead of benchmarking
our stack creation, which is swappable anyway.
2015-04-15 22:11:36 -04:00
edef
7167b0b570
add Context::destroy
2015-04-15 21:54:56 -04:00
edef
31652d7b8f
limit compilation of arch to x86_64
...
the current code only supports x86_64 (#1 ), and we want to fail hard on
any other architecture for now.
2015-04-15 21:52:08 -04:00
edef
6d56cc593e
feature-flag os, but leave it enabled by default
2015-04-15 21:51:37 -04:00
edef
54b34383e3
parametrise Context on Stack
2015-04-15 21:51:37 -04:00
edef
8dc53c3125
make Context::new take a stack, instead of creating one
2015-04-15 19:35:27 -04:00
edef
27318bc271
rename platform to os
2015-04-15 19:35:27 -04:00
edef
5ae54da9c2
make context public
2015-04-15 19:35:27 -04:00
edef
9855084890
make stack public
2015-04-15 19:35:27 -04:00
edef
7aa58f43f7
add StackSource and implement it for platform::Stack
2015-04-15 19:35:27 -04:00
edef
f7511dc2c1
add a context creation benchmark
2015-04-15 19:35:27 -04:00
edef
f620005d0f
move the example to the examples dir
2015-04-15 19:35:27 -04:00
edef
5c5f5095c3
move arch::{initialize_call_frame, swap} to inherent mthods of Registers
...
they're now Registers::{new, swap}, because they're
already effectively a constructor and a method.
2015-04-15 19:35:27 -04:00
edef
67b26662c3
remove extraneous newline in LICENSE
2015-04-15 02:11:39 -04:00
edef
ae00fa2346
document why we're not using a straigh `ret`
2015-04-15 02:06:52 -04:00
edef
d06e7c7cdd
fix the copy impl for Registers
2015-04-15 01:23:33 -04:00
edef
884496c6b9
document the assembly
2015-03-27 03:33:20 -04:00
edef
a39493d740
rewrite platform.rs to use mmap directly
2015-03-27 02:52:25 -04:00
edef
175583e335
simplify build script
2015-03-26 22:48:51 -04:00
edef
deb452c651
that doesn't need to be mutable
2015-03-03 01:53:35 -05:00
edef
b0dcc65304
Rust updates
2015-03-03 01:53:04 -05:00
edef
8515bf0fa1
closure syntax changed
2015-02-23 23:14:58 -05:00
edef
e51cfa1b7b
no_std is a feature flag now
2015-02-23 23:13:25 -05:00
edef
a54e573073
Rust updates
2015-02-02 14:17:23 -05:00
edef
4d815b8ec9
clean up warnings in the build script
2015-01-14 11:27:43 +01:00
edef
3f76c4baea
use std in test configurations
...
this makes `cargo test` and `cargo bench` work cleanly, for one.
2015-01-14 11:27:43 +01:00
edef
40d0923704
add AVX registers to clobbers, do some formatting
...
cover ALL THE REGISTERS. also added rbp, rsp in a comment for
completeness.
2015-01-14 11:27:43 +01:00
edef
299a0a5d98
complete rewrite!
...
featuring 7ns inlineable context switches, no more separately-built
assembly objects, and a vastly nicer interface.
incontext/outcontext are no more, context switch calls now take a single
context structure, which functions as both.
everything now also functions without any heap allocations -- for the
context setup, only an FnOnce() value is necessary.
2015-01-14 11:27:43 +01:00
edef
5cf3a35d65
move the benchmarks around a little
2015-01-14 07:01:43 +01:00
edef
0729ca8648
yay, Rust beta…
2015-01-13 08:38:52 +01:00
edef
fec3f2eaef
Rust updates
2015-01-09 22:45:39 +01:00
edef
fbd37bf96b
add LICENSE
2014-12-31 22:46:01 +01:00
edef
c06c5ea7a0
typo
2014-12-25 12:25:11 +01:00
edef
612e854acb
move {get,set}_sp_limit into Rust-land
2014-12-25 12:24:02 +01:00
edef
b961956ea5
Rust updates (MapOption fixes)
2014-12-25 11:50:48 +01:00
edef
59e723d099
free ourselves from the shackles of libstd
2014-12-24 07:28:21 +01:00
edef
a94bc324fe
move stack creation / destruction into platform
2014-12-24 07:07:25 +01:00
edef
3957ac99ae
use arch::uintptr_t instead of libc::uintptr_t
2014-12-24 06:53:36 +01:00
edef
24b7aee96f
u64 -> uintptr_t
2014-12-24 06:52:52 +01:00
edef
99db603d63
Stack.top returns a mutable pointer, so it should take &mut self
2014-12-24 06:51:46 +01:00
edef
e0f2d48196
sneak an extra argument in by using rbx for the jump target
2014-12-24 06:48:49 +01:00
edef
3d35f5280d
change the prefix from lwut_ to lwt_
...
we'll be using a lot of this code in kernelmode too, later.
2014-12-24 06:48:08 +01:00
edef
c209eed3a6
top of stack is mutable
2014-12-24 06:44:03 +01:00
edef
621bd9c9ab
don't deref in the macros
2014-12-24 06:44:03 +01:00