summary refs log tree commit diff
path: root/src/rt/arch
AgeCommit message (Collapse)AuthorLines
2013-11-18rt: Namespace all C functions under rust_Brian Anderson-10/+10
2013-11-06Fixes for compilation to iOS:kud1ing-2/+8
- remove /usr/include from the include path since the iOS SDK provides the correct version - `_NSGetEnviron()` is private and not available on iOS - `.align` without an argument is not allowed with the Apple tools. 2^2 should be the default alignment - ignore error messages for XCode < 5 - pass include path to libuv
2013-10-22Fix unwinding on OS X 10.9.Mark Rowe-3/+21
OS X 10.9's linker has a bug that results in it failing to preserve DWARF unwind information when passed the -no_compact_unwind flag. This flag is passed on OS X because the unwind information for __morestack cannot be represented by the compact unwind format. We can work around this problem by using a more targeted approach to disabling compact unwind information. The OS X linker looks for a particular pattern in the DWARF unwind information and will not attempt to convert the unwind information to the compact format. The pattern in question is the return address register being saved twice to the same location. Fixes #6849.
2013-10-19Use __morestack to detect stack overflowAlex Crichton-1407/+56
This commit resumes management of the stack boundaries and limits when switching between tasks. This additionally leverages the __morestack function to run code on "stack overflow". The current behavior is to abort the process, but this is probably not the best behavior in the long term (for deails, see the comment I wrote up in the stack exhaustion routine).
2013-08-26Support Win64 context switchingklutzy-9/+75
This patch saves and restores win64's nonvolatile registers. This patch also saves stack information of thread environment block (TEB), which is at %gs:0x08 and %gs:0x10.
2013-08-26rt: Add {get,record}_sp_limit on Win64klutzy-0/+8
Uses ArbitraryUserPointer area at gs:0x28.
2013-08-26rt: Remove leading underscore on Win64klutzy-3/+6
Win64 convention does not use underscore.
2013-08-22Emit unwind info in rustrt assembly files on Windows.Vadim Chugunov-10/+10
2013-08-04Add support for vanilla linux on arm.Luqman Aden-0/+14
2013-06-16Partial fix for #7158: Save EDX in morestack on x86-32Niko Matsakis-0/+2
2013-06-06Deduplicate words in code commentsAlexei Sholik-4/+4
2013-05-22fix arm stack alignmentJyun-Yan You-2/+4
2013-05-21fix mips stack alignmentJyun-Yan You-2/+4
2013-05-17auto merge of #6249 : crabtw/rust/arm, r=brsonbors-0/+8
It uses the private field of TCB head to store stack limit. I tested on my Raspberry PI. A simple hello world program ran without any problem. However, for a more complex program, it segfaulted as #6231.
2013-05-09improve MIPS backend and implement segmented stacksJyun-Yan You-5/+101
2013-05-07preliminary Linux ARM supportJyun-Yan You-0/+8
2013-05-03add gitattributes and fix whitespace issuesDaniel Micay-21/+3
2013-04-18auto merge of #5418 : luqmana/rust/stack-float, r=brsonbors-19/+3
Like I commented in #2043, I can't reproduce the weirdness from #1388 on either mac or linux (x84_64) and pushing to try gives all green. That's 128 less bytes to have to keep in the stack for every call to __morestack.
2013-04-10add unwind information on morestackILyoan-14/+19
2013-04-10rust morestack assembly for armILyoan-42/+60
Conflicts: src/rt/arch/arm/morestack.S
2013-04-04rt: improve mips backendJyun-Yan You-11/+22
2013-04-01rt/arch/arm: fix syntax used for noexec stackDaniel Micay-4/+4
2013-03-31mark the assembly object stacks as non-executableDaniel Micay-19/+91
Closes #5643 This also removes the need to pass noexecstack to gcc, but that wasn't actually working anymore.
2013-03-25auto merge of #5424 : luqmana/rust/inline-rt, r=brsonbors-112/+200
As per #2521. Inlining seems to improve performance slightly: Inlined Not Inlined x86: 13.5482 14.4112 x86_64: 17.4712 18.0696 (Average of 5 runs timed with `time`) ```Rust fn foo() -> int { int::from_str(~"28098").unwrap() } fn main() { for 1000000.times { foo(); foo(); foo(); foo(); foo(); } } ``` All run on: Linux 3.2.0-0.bpo.4-amd64 #1 SMP Debian 3.2.35-2~bpo60+1 x86_64 GNU/Linux The MIPS and ARM bits I didn't inline since I'm not as familiar with them and I also can't test them. All green on try.
2013-03-19Rewrite arm/ccall.sILyoan-15/+10
2013-03-18rt: Inline get_sp_limit/set_sp_limit/get_sp for x86.Luqman Aden-63/+45
2013-03-17rt: Inline get_sp_limit/set_sp_limit/get_sp for x86_64.Luqman Aden-52/+158
2013-03-17rt: don't save and restore xmm/regs in __morestack.Luqman Aden-19/+3
2013-03-11core: Add rt mod and add the new scheduler codeBrian Anderson-8/+18
2013-03-06Merge remote-tracking branch 'brson/cross7'Brian Anderson-0/+8
Conflicts: configure mk/rt.mk
2013-03-03rt: fix some bugs for MIPS targetJyun-Yan You-2/+23
2013-03-03rt: MIPS32 supportJyun-Yan You-0/+316
2013-02-27mk: rewrite make filesYoung-il Choi-0/+8
2013-01-17Add a license check to tidy. #4018Brian Anderson-2/+7
2013-01-13Support ARM and Androidkyeongwoon-0/+273
Conflicts: src/libcore/os.rs src/librustc/back/link.rs src/librustc/driver/driver.rs src/librustc/metadata/loader.rs src/librustc/middle/trans/base.rs
2012-12-10Add license boilerplate to more files.Graydon Hoare-0/+40
2012-12-03Update license, add license boilerplate to most files. Remainder will follow.Graydon Hoare-0/+60
2012-06-28Remove FIXME questionTim Chevalier-2/+0
brson said the answer to the question is probably no... so I'm going to be bold and remove this. Closes #2685
2012-06-21Try removing code marked with "I don't think this is necessary"Tim Chevalier-15/+1
2012-06-07rt: Remove check_stack_alignmentBrian Anderson-20/+0
This function does not do what it tries to do and it is expensive
2012-04-04rt: Add architecture-specific general-purpose register definitionsPatrick Walton-0/+73
This will be used for stack crawling, which in turn will be used for GC and unwinding.
2012-04-03Refactor includes structure, getting rid of rust_internal.hJon Morton-12/+4
Many changes to code structure are included: - removed TIME_SLICE_IN_MS - removed sychronized_indexed_list - removed region_owned - kernel_owned move to kernel.h, task_owned moved to task.h - global configs moved to rust_globals.h - changed #pragma once to standard guard in rust_upcall.h - got rid of memory.h
2012-03-31rt: Fix whitespaceBrian Anderson-3/+3
2012-03-21rt: Shave 16 bytes off the __morestack frameBrian Anderson-2/+2
2012-03-21rt: Shave a few instructions off __morestackBrian Anderson-42/+31
2012-03-21rt: Add a get_sp_limit functionBrian Anderson-0/+40
2012-03-21rt: Rename record_sp to record_sp_limitBrian Anderson-13/+13
2012-02-09rt: Use rust_task_thread's C-stack pool for native callsBrian Anderson-12/+0
2012-02-09rt: Rename call_shim_on_c_stack to call_and_change_stacksBrian Anderson-2/+2
2012-02-09rt: Remove unused context functionsBrian Anderson-28/+0