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