kern

annotate src/test_proc.S @ 80:4db99a52863e

fixed the "endianess" of the text messages in the ATA identify info block. this is the first time I've seen wrong byteorder in ascii text, the ATA committee should be commended.
author John Tsiombikas <nuclear@member.fsf.org>
date Tue, 06 Dec 2011 13:35:39 +0200
parents c7bd6ec7b946
children
rev   line source
nuclear@51 1 #define ASM
nuclear@51 2 #include <syscall.h>
nuclear@44 3
nuclear@44 4 .text
nuclear@44 5 .globl test_proc
nuclear@44 6 test_proc:
nuclear@57 7 /* fork another process */
nuclear@57 8 movl $SYS_FORK, %eax
nuclear@57 9 int $SYSCALL_INT
nuclear@57 10
nuclear@71 11 /* test copy-on-write by pushing the pid to the stack
nuclear@71 12 * then use this value from the stack times 2 as a sleep
nuclear@71 13 * interval in the loop.
nuclear@71 14 */
nuclear@71 15 movl $SYS_GETPID, %eax
nuclear@71 16 int $SYSCALL_INT
nuclear@69 17 push %eax
nuclear@69 18
nuclear@75 19 /* this will count the iterations */
nuclear@75 20 xor %ecx, %ecx
nuclear@75 21
nuclear@57 22 infloop:
nuclear@44 23 /* --- print a message --- */
nuclear@44 24 movl $SYS_HELLO, %eax
nuclear@44 25 int $SYSCALL_INT
nuclear@44 26
nuclear@57 27
nuclear@60 28 /* --- sleep for (pid * 2) seconds ---
nuclear@71 29 * grab the pid from the stack and shift it left to
nuclear@71 30 * multiply the pid by 2. Then use that as a sleep interval
nuclear@71 31 * in seconds.
nuclear@60 32 */
nuclear@71 33 movl (%esp), %ebx
nuclear@71 34 shl $1, %ebx
nuclear@44 35 movl $SYS_SLEEP, %eax
nuclear@44 36 int $SYSCALL_INT
nuclear@44 37
nuclear@75 38 inc %ecx
nuclear@75 39
nuclear@75 40 /* let process 2 quit after 2 iterations */
nuclear@75 41 cmpl $2, (%esp)
nuclear@75 42 jne 1f
nuclear@75 43 cmpl $2, %ecx
nuclear@75 44 je exit_proc
nuclear@75 45
nuclear@75 46 1:
nuclear@57 47 jmp infloop
nuclear@44 48
nuclear@75 49 exit_proc:
nuclear@75 50 movl $SYS_EXIT, %eax
nuclear@75 51 movl $0, %ebx
nuclear@75 52 int $SYSCALL_INT
nuclear@75 53
nuclear@75 54 /* shouldn't reach this, trap otherwise */
nuclear@75 55 int $3
nuclear@75 56
nuclear@44 57 .globl test_proc_end
nuclear@44 58 test_proc_end: