File: thread_asm.S

package info (click to toggle)
syslinux 3%3A6.04~git20190206.bf6db5b4%2Bdfsg1-3.2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,020 kB
  • sloc: ansic: 189,354; asm: 5,148; pascal: 4,825; makefile: 1,981; perl: 1,980; python: 266; sh: 185; xml: 39
file content (37 lines) | stat: -rw-r--r-- 761 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
	.globl	__switch_to
	.type	__switch_to, @function
__switch_to:
	movl	__current, %edx
	pushl	%ebx
	pushl	%ebp
	pushl	%esi
	pushl	%edi
	pushl	RealModeSSSP
	pushl	errno			/* Hack! */
	movl	%esp, (%edx)

	movl	%eax, __current
	movl	(%eax), %esp
	popl	errno
	popl	RealModeSSSP
	popl	%edi
	popl	%esi
	popl	%ebp
	popl	%ebx
	ret
	.size	__switch_to, .-__switch_to

	.globl	__start_thread
	.type	__start_thread, @function
__start_thread:
	movl	%edi, %eax		/* Thread function argument */

	pushl	$0			/* For gdb's benefit */
	movl	%esp, %ebp		/* For gdb's benefit */

	pushl	%ebx			/* Set up the flags/interrupt state */
	popfl

	call	*%esi			/* Run the desired function */
	jmp	__exit_thread		/* If we get here, kill the thread */
	.size	__start_thread, .-__start_thread