rust/src
Philipp Oppermann b44805875e Add support for x86-interrupt calling convention
Tracking issue: https://github.com/rust-lang/rust/issues/40180

This calling convention can be used for definining interrupt handlers on
32-bit and 64-bit x86 targets. The compiler then uses `iret` instead of
`ret` for returning and ensures that all registers are restored to their
original values.

Usage:

```
extern "x86-interrupt" fn handler(stack_frame: &ExceptionStackFrame) {…}
```

for interrupts and exceptions without error code and

```
extern "x86-interrupt" fn page_fault_handler(stack_frame: &ExceptionStackFrame,
                                             error_code: u64) {…}
```

for exceptions that push an error code (e.g., page faults or general
protection faults). The programmer must ensure that the correct version
is used for each interrupt.

For more details see the [LLVM PR][1] and the corresponding [proposal][2].

[1]: https://reviews.llvm.org/D15567
[2]: http://lists.llvm.org/pipermail/cfe-dev/2015-September/045171.html
2017-03-02 19:01:15 +01:00
..
bootstrap travis: Split Android into dist/test images 2017-02-27 21:20:23 -08:00
build_helper Build libbacktrace/jemalloc only when their timestamps are older than sources 2017-02-02 22:40:42 +03:00
ci Rollup merge of #40130 - alexcrichton:fix-musl-again, r=nikomatsakis 2017-02-28 15:38:39 -08:00
compiler-rt@d30da544a8 sanitizer support 2017-02-08 18:51:43 -05:00
doc Rollup merge of #40194 - letmaik:patch-1, r=steveklabnik 2017-03-02 11:29:43 +01:00
driver
etc Vec, LinkedList, VecDeque, String, and Option NatVis visualizations 2017-02-15 01:51:19 -08:00
grammar Fix typo 2017-02-15 15:13:31 +03:00
jemalloc@11bfb0dcf8 Update jemalloc to include various fixes for OSX 10.12 2017-01-19 09:01:52 +09:00
liballoc Revert "Fix up links" 2017-02-20 09:09:12 -05:00
liballoc_jemalloc test: Verify all sysroot crates are unstable 2017-02-21 11:38:17 -08:00
liballoc_system
libarena
libbacktrace libbacktrace: Fix uninitialized variable 2017-02-04 01:18:10 +03:00
libcollections Rollup merge of #40028 - withoutboats:string_from_iter, r=alexcrichton 2017-02-28 22:55:30 -05:00
libcollectionstest add impl for RangeToInclusive 2017-02-18 20:58:12 +00:00
libcompiler_builtins add solaris sparcv9 support 2017-02-16 21:40:14 -08:00
libcore Rollup merge of #40126 - GuillaumeGomez:fmt-write-docs, r=frewsxcv 2017-02-28 08:33:09 -05:00
libcoretest Improve fmt float 2017-02-07 20:58:34 +11:00
libflate std: Remove cfg(cargobuild) annotations 2017-02-06 08:42:54 -08:00
libfmt_macros
libgetopts
libgraphviz
liblibc@64d954c6a7 Update name_bytes, scoop up latest libc 2017-02-22 09:28:02 -08:00
liblog
libpanic_abort
libpanic_unwind std: Remove cfg(cargobuild) annotations 2017-02-06 08:42:54 -08:00
libproc_macro Add syntax::ext::tt::quoted::{TokenTree, ..} and remove tokenstream::TokenTree::Sequence. 2017-02-28 22:14:29 +00:00
libproc_macro_plugin Add syntax::ext::tt::quoted::{TokenTree, ..} and remove tokenstream::TokenTree::Sequence. 2017-02-28 22:14:29 +00:00
librand Remove specialization from Debug implementations 2017-01-20 13:10:36 +01:00
librustc inhibit enum layout optimizations under #[repr(C)] or #[repr(u8)] 2017-03-01 15:44:27 -05:00
librustc_asan use helper function in the rebuild logic of the rustc_*san crates 2017-02-08 18:51:43 -05:00
librustc_back add solaris sparcv9 support 2017-02-16 21:40:14 -08:00
librustc_bitflags
librustc_borrowck rustc_typeck: rework coherence to be almost completely on-demand. 2017-02-25 18:35:26 +02:00
librustc_const_eval rustc_const_eval: demand that the MIR qualify_consts ran on each evaluated body. 2017-02-25 18:35:26 +02:00
librustc_const_math rustc_const_eval: always demand typeck_tables for evaluating constants. 2017-02-25 18:35:26 +02:00
librustc_data_structures Auto merge of #39456 - nagisa:mir-switchint-everywhere, r=nikomatsakis 2017-02-13 02:32:09 +00:00
librustc_driver Add warning cycle. 2017-02-28 22:15:12 +00:00
librustc_errors store typeck lints in the TypeckTables 2017-02-02 20:38:16 -05:00
librustc_incremental Remove Token::MatchNt. 2017-02-28 22:15:09 +00:00
librustc_lint Auto merge of #34198 - eddyb:you're-a-bad-transmute-and-you-should-feel-bad, r=nikomatsakis 2017-03-01 10:03:44 +00:00
librustc_llvm Add support for x86-interrupt calling convention 2017-03-02 19:01:15 +01:00
librustc_lsan use helper function in the rebuild logic of the rustc_*san crates 2017-02-08 18:51:43 -05:00
librustc_metadata rustc_const_eval: demand that the MIR qualify_consts ran on each evaluated body. 2017-02-25 18:35:26 +02:00
librustc_mir rustc_const_eval: demand that the MIR qualify_consts ran on each evaluated body. 2017-02-25 18:35:26 +02:00
librustc_msan use helper function in the rebuild logic of the rustc_*san crates 2017-02-08 18:51:43 -05:00
librustc_passes rustc_const_eval: always demand typeck_tables for evaluating constants. 2017-02-25 18:35:26 +02:00
librustc_platform_intrinsics Auto merge of #38561 - nagisa:rdrandseed, r=alexcrichton 2017-02-14 01:26:10 +00:00
librustc_plugin Remove unused extern crates. 2017-01-22 01:31:02 +00:00
librustc_privacy rustc: store type parameter defaults outside of ty::Generics. 2017-02-25 17:07:59 +02:00
librustc_resolve rustc: introduce a query system for type information in ty::maps. 2017-02-25 17:07:59 +02:00
librustc_save_analysis Add syntax::ext::tt::quoted::{TokenTree, ..} and remove tokenstream::TokenTree::Sequence. 2017-02-28 22:14:29 +00:00
librustc_trans Add support for x86-interrupt calling convention 2017-03-02 19:01:15 +01:00
librustc_tsan use helper function in the rebuild logic of the rustc_*san crates 2017-02-08 18:51:43 -05:00
librustc_typeck rustc_const_eval: always demand typeck_tables for evaluating constants. 2017-02-25 18:35:26 +02:00
librustdoc Rollup merge of #39944 - GuillaumeGomez:associated-consts, r=frewsxcv 2017-02-28 22:55:28 -05:00
libserialize Only SwitchInt over integers, not all consts 2017-02-10 19:42:41 +02:00
libstd Rollup merge of #40081 - GuillaumeGomez:poison-docs, r=frewsxcv 2017-03-02 11:29:35 +01:00
libstd_unicode Fix a few impl stability attributes 2017-01-29 13:31:47 +00:00
libsyntax Add support for x86-interrupt calling convention 2017-03-02 19:01:15 +01:00
libsyntax_ext Add syntax::ext::tt::quoted::{TokenTree, ..} and remove tokenstream::TokenTree::Sequence. 2017-02-28 22:14:29 +00:00
libsyntax_pos store typeck lints in the TypeckTables 2017-02-02 20:38:16 -05:00
libterm
libtest fix typo 2017-02-27 11:18:11 +08:00
libunwind Improve backtrace formating while panicking. 2017-02-15 14:24:37 -05:00
llvm@ceb177eeef
rt Set correct hoedown submodule branch 2017-02-03 11:08:20 +01:00
rtstartup
rust-installer@4f99485080
rustc test: Verify all sysroot crates are unstable 2017-02-21 11:38:17 -08:00
rustllvm rustc: Link statically to the MSVCRT 2017-02-15 19:36:29 -08:00
test Add support for x86-interrupt calling convention 2017-03-02 19:01:15 +01:00
tools Add compile fail test for abi_ptx 2017-03-01 13:12:07 +09:00
Cargo.lock Rollup merge of #40151 - steveklabnik:update-mdbook, r=frewsxcv 2017-02-28 15:38:42 -08:00
Cargo.toml test: Verify all sysroot crates are unstable 2017-02-21 11:38:17 -08:00
stage0.txt Bump version, upgrade bootstrap 2017-02-03 13:25:46 -08:00