Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2003 15:27:08 -0700 (PDT)
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 29553 for review
Message-ID:  <200304232227.h3NMR8So029399@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=29553

Change 29553 by peter@peter_daintree on 2003/04/23 15:26:35

	checkpoint of initial conversion to x86-64.  Of note, pipe(2) is
	very broken.  %rdi is clobbered by the syscall so I need to not use
	the SYSCALL() macro.

Affected files ...

.. //depot/projects/hammer/lib/libc/x86_64/sys/Ovfork.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/brk.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/cerror.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/exect.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/pipe.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/reboot.S#2 edit
.. //depot/projects/hammer/lib/libc/x86_64/sys/sbrk.S#2 edit

Differences ...

==== //depot/projects/hammer/lib/libc/x86_64/sys/Ovfork.S#2 (text+ko) ====

@@ -47,12 +47,12 @@
 	.weak	vfork
 	.set	vfork,__sys_vfork
 ENTRY(__sys_vfork)
-	popl	%ecx		/* my rta into ecx */
-	mov	$SYS_vfork,%eax
+	popq	%rcx		/* my rta into ecx */
+	mov	$SYS_vfork,%rax
 	KERNCALL
 	jb	1f
-	jmp	*%ecx
+	jmp	*%rcx
 1:
-	pushl	%ecx
+	pushq	%rcx
 	PIC_PROLOGUE
 	jmp     PIC_PLT(HIDENAME(cerror))

==== //depot/projects/hammer/lib/libc/x86_64/sys/brk.S#2 (text+ko) ====

@@ -45,6 +45,7 @@
 	.globl	HIDENAME(curbrk)
 	.globl	HIDENAME(minbrk)
 ENTRY(_brk)
+	pushq	%rdi
 	jmp	ok
 
 ENTRY(brk)
@@ -72,18 +73,19 @@
 
 #else
 
-	movl	4(%esp),%eax
-	cmpl	%eax,HIDENAME(minbrk)
+	pushq	%rdi
+	movq	%rdi,%rax
+	cmpq	%rax,HIDENAME(minbrk)
 	jbe	ok
-	movl	HIDENAME(minbrk),%eax
-	movl	%eax,4(%esp)
+	movq	HIDENAME(minbrk),%rdi
 ok:
-	mov	$SYS_break,%eax
+	movq	$SYS_break,%rax
 	KERNCALL
 	jb	err
-	movl	4(%esp),%eax
-	movl	%eax,HIDENAME(curbrk)
-	movl	$0,%eax
+	movq	0(%rsp),%rax
+	movq	%rax,HIDENAME(curbrk)
+	movq	$0,%rax
+	popq	%rdi
 	ret
 err:
 	jmp	HIDENAME(cerror)

==== //depot/projects/hammer/lib/libc/x86_64/sys/cerror.S#2 (text+ko) ====

@@ -52,18 +52,18 @@
 	.globl	CNAME(__error)
 	.type	CNAME(__error),@function
 HIDENAME(cerror):
-	pushl	%eax
+	pushq	%rax
 #ifdef PIC
 	/* The caller must execute the PIC prologue before jumping to cerror. */
 	call	PIC_PLT(CNAME(__error))
-	popl	%ecx
+	popq	%rcx
 	PIC_EPILOGUE
 #else
 	call	CNAME(__error)
-	popl	%ecx
+	popq	%rcx
 #endif
-	movl	%ecx,(%eax)
-	movl	$-1,%eax
-	movl	$-1,%edx
+	movq	%rcx,(%rax)
+	movq	$-1,%rax
+	movq	$-1,%rdx
 	ret
 

==== //depot/projects/hammer/lib/libc/x86_64/sys/exect.S#2 (text+ko) ====

@@ -44,12 +44,12 @@
 #include <machine/psl.h>
 
 ENTRY(exect)
-	mov	$SYS_execve,%eax
-	pushf
-	popl	%edx
-	orl	$ PSL_T,%edx
-	pushl	%edx
-	popf
+	movq	$SYS_execve,%rax
+	pushfq
+	popq	%rdx
+	orq	$ PSL_T,%rdx
+	pushq	%rdx
+	popfq
 	KERNCALL
 	PIC_PROLOGUE
 	jmp	PIC_PLT(HIDENAME(cerror))	/* exect(file, argv, env); */

==== //depot/projects/hammer/lib/libc/x86_64/sys/pipe.S#2 (text+ko) ====

@@ -43,8 +43,8 @@
 #include "SYS.h"
 
 SYSCALL(pipe)
-	movl	4(%esp),%ecx
-	movl	%eax,(%ecx)
-	movl	%edx,4(%ecx)
-	movl	$0,%eax
+	movq	8(%rsp),%rcx	/* XXX wrong!! %rdi!! */
+	movq	%rax,(%rcx)
+	movq	%rdx,8(%rcx)
+	movq	$0,%rax
 	ret

==== //depot/projects/hammer/lib/libc/x86_64/sys/reboot.S#2 (text+ko) ====

@@ -43,4 +43,4 @@
 #include "SYS.h"
 
 SYSCALL(reboot)
-	iret
+	iretq

==== //depot/projects/hammer/lib/libc/x86_64/sys/sbrk.S#2 (text+ko) ====

@@ -47,8 +47,8 @@
 	.globl	HIDENAME(curbrk)
 
 	.data
-HIDENAME(minbrk):	.long	CNAME(_end)
-HIDENAME(curbrk):	.long	CNAME(_end)
+HIDENAME(minbrk):	.quad	CNAME(_end)
+HIDENAME(curbrk):	.quad	CNAME(_end)
 	.text
 
 ENTRY(sbrk)
@@ -77,18 +77,22 @@
 
 #else /* !PIC */
 
-	movl	4(%esp),%ecx
-	movl	HIDENAME(curbrk),%eax
-	testl	%ecx,%ecx
+	pushq	%rdi
+	movq	%rdi,%rcx
+	movq	HIDENAME(curbrk),%rax
+	testq	%rcx,%rcx
 	jz	back
-	addl	%eax,4(%esp)
+	addq	%rax,%rdi
 	mov	$SYS_break,%eax
 	KERNCALL
 	jb	err
-	movl	HIDENAME(curbrk),%eax
-	addl	%ecx,HIDENAME(curbrk)
+	movq	HIDENAME(curbrk),%rax
+	movq	0(%rsp), %rcx
+	addq	%rcx,HIDENAME(curbrk)
 back:
+	addq	$8, %rsp
 	ret
 err:
+	addq	$8, %rsp
 	jmp	HIDENAME(cerror)
 #endif /* PIC */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304232227.h3NMR8So029399>