Commit Graph

262 Commits

Author SHA1 Message Date
edef
7e0b126f42 separate all the libc interaction out per OS
We're now handling more of this ourselves, and leaving less to libstd.
Hopefully, we'll eventually break free of libstd, leaving a
highly-focused low-level library that retains all its conveniences in
freestanding environments.
2015-04-16 02:16:08 -04:00
edef
46b2a4007b improve the assembly documentation 2015-04-16 00:22:50 -04:00
edef
d25f43d4d5 add license headers to the assembly files 2015-04-16 00:16:23 -04:00
edef
e6c3c36b46 line-wrap LICENSE 2015-04-16 00:13:58 -04:00
edef
395a41d446 update LICENSE year 2015-04-16 00:12:15 -04:00
edef
5c252bdef5 document Stack and StackSource 2015-04-15 23:38:07 -04:00
edef
5b6aa23731 pass os::Stack addresses to Valgrind in the right order 2015-04-15 22:48:42 -04:00
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