17 lines
		
	
	
		
			346 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			17 lines
		
	
	
		
			346 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| .global jump_to_userspace
 | |
| jump_to_userspace:
 | |
| mov $0x20 | 0x3, %ax
 | |
| movw %ax, %ds
 | |
| movw %ax, %es
 | |
| movw %ax, %fs
 | |
| movw %ax, %gs
 | |
| pushl $0x20 | 0x3  /* SS*/ 
 | |
| pushl $0x00c00100  /* ESP */ 
 | |
| pushf              /* EFLAGS */    
 | |
| popl %eax
 | |
| orl $0x200, %eax
 | |
| pushl %eax         /* Set interrupts */
 | |
| pushl $0x18 | 0x3  /* CS */
 | |
| pushl $0x00800000  /* EIP */ 
 | |
| iret
 |