Enable SSE and FPU
This commit is contained in:
		
							parent
							
								
									e3df5194fe
								
							
						
					
					
						commit
						bc1b503d25
					
				
					 7 changed files with 37 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
///! Process syscalls
 | 
			
		||||
 | 
			
		||||
use alloc::arc::Arc;
 | 
			
		||||
use alloc::boxed::Box;
 | 
			
		||||
use collections::Vec;
 | 
			
		||||
use core::mem;
 | 
			
		||||
use core::str;
 | 
			
		||||
| 
						 | 
				
			
			@ -58,6 +58,7 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
 | 
			
		|||
    let pid;
 | 
			
		||||
    {
 | 
			
		||||
        let arch;
 | 
			
		||||
        let mut kfx_option = None;
 | 
			
		||||
        let mut kstack_option = None;
 | 
			
		||||
        let mut offset = 0;
 | 
			
		||||
        let mut image = vec![];
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +78,14 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
 | 
			
		|||
 | 
			
		||||
            arch = context.arch.clone();
 | 
			
		||||
 | 
			
		||||
            if let Some(ref fx) = context.kfx {
 | 
			
		||||
                let mut new_fx = unsafe { Box::from_raw(::alloc::heap::allocate(512, 16) as *mut [u8; 512]) };
 | 
			
		||||
                for (new_b, b) in new_fx.iter_mut().zip(fx.iter()) {
 | 
			
		||||
                    *new_b = *b;
 | 
			
		||||
                }
 | 
			
		||||
                kfx_option = Some(new_fx);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if let Some(ref stack) = context.kstack {
 | 
			
		||||
                offset = stack_base - stack.as_ptr() as usize - mem::size_of::<usize>(); // Add clone ret
 | 
			
		||||
                let mut new_stack = stack.clone();
 | 
			
		||||
| 
						 | 
				
			
			@ -238,6 +247,11 @@ pub fn clone(flags: usize, stack_base: usize) -> Result<usize> {
 | 
			
		|||
                });
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if let Some(fx) = kfx_option.take() {
 | 
			
		||||
                context.arch.set_fx(fx.as_ptr() as usize);
 | 
			
		||||
                context.kfx = Some(fx);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Set kernel stack
 | 
			
		||||
            if let Some(stack) = kstack_option.take() {
 | 
			
		||||
                context.arch.set_stack(stack.as_ptr() as usize + offset);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue