Commit Graph

101 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 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 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 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 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 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 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 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 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
edef 5a06b04a6a factor macros out and generalise them 2014-12-24 06:44:03 +01:00
edef 791173fd97 refactoring! 2014-12-24 06:44:03 +01:00
edef 555a3d73c0 rename platform.s to arch.s 2014-12-24 04:16:57 +01:00
edef e9d6146b5b initial commit 2014-12-23 04:27:28 +01:00