Subversion Repositories freemyipod

Rev

Rev 563 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 563 Rev 593
Line 21... Line 21...
21
@
21
@
22
 
22
 
23
#define ASM_FILE
23
#define ASM_FILE
24
#include "global.h"
24
#include "global.h"
25
 
25
 
26
.section .icode.contextswitch, "ax", %progbits
26
.section .icode.yield, "ax", %progbits
27
.align 2
27
.align 2
28
.global context_switch
28
.global yield
29
.type context_switch, %function
29
.type yield, %function
30
context_switch:
30
yield:
31
	mrs	r1, cpsr
31
	mrs	r1, cpsr
32
	msr	cpsr_c, #0xdf
32
	msr	cpsr_c, #0xdf
33
	ldr	r0, =current_thread
33
	ldr	r0, =current_thread
34
	ldr	r0, [r0]
34
	ldr	r0, [r0]
35
	stmia	r0!, {r0-r14}
35
	stmia	r0!, {r0-r14}
Line 37... Line 37...
37
	str	r1, [r0]
37
	str	r1, [r0]
38
	msr	cpsr_c, #0xd2
38
	msr	cpsr_c, #0xd2
39
	adr	lr, resume_thread
39
	adr	lr, resume_thread
40
	mov	r0, #-1
40
	mov	r0, #-1
41
	b	scheduler_switch
41
	b	scheduler_switch
42
.size context_switch, .-context_switch
42
.size yield, .-yield
43
 
43
 
44
.global syscall_handler
44
.global syscall_handler
45
.type syscall_handler, %function
45
.type syscall_handler, %function
46
syscall_handler:
46
syscall_handler:
47
	ldr	sp, [lr,#-4]
47
	ldr	sp, [lr,#-4]