summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authortjr <tjr@FreeBSD.org>2002-12-21 05:11:39 +0000
committertjr <tjr@FreeBSD.org>2002-12-21 05:11:39 +0000
commit4d5ffd678248c59219ce8dcca46e2b5ff680fcfc (patch)
treea73a0a612cf5e954bb20b43c6011c1be90bff18f /lib
parentb5dd8790dcb56a491989dfc09a86071f56ac70e7 (diff)
downloadFreeBSD-src-4d5ffd678248c59219ce8dcca46e2b5ff680fcfc.zip
FreeBSD-src-4d5ffd678248c59219ce8dcca46e2b5ff680fcfc.tar.gz
Import newer versions of div() and ldiv() from NetBSD which handle
the -fpcc-struct-return calling convention properly instead of returning garbage. This may break backwards compatibility with some old binaries that were compiled when -fno-pcc-struct-return was the default.
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/i386/stdlib/div.S46
-rw-r--r--lib/libc/i386/stdlib/ldiv.S46
2 files changed, 24 insertions, 68 deletions
diff --git a/lib/libc/i386/stdlib/div.S b/lib/libc/i386/stdlib/div.S
index bafaf6a..82c5b4f 100644
--- a/lib/libc/i386/stdlib/div.S
+++ b/lib/libc/i386/stdlib/div.S
@@ -1,41 +1,19 @@
/*
- * Copyright (c) 1993 Winning Strategies, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Winning Strategies, Inc.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
*/
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
ENTRY(div)
- movl 4(%esp),%eax
- movl 8(%esp),%ecx
- cdq
- idiv %ecx
- movl %eax,4(%esp)
- movl %edx,8(%esp)
- ret
+ pushl %ebx
+ movl 8(%esp),%ebx
+ movl 12(%esp),%eax
+ movl 16(%esp),%ecx
+ cdq
+ idiv %ecx
+ movl %eax,(%ebx)
+ movl %edx,4(%ebx)
+ popl %ebx
+ ret $4
diff --git a/lib/libc/i386/stdlib/ldiv.S b/lib/libc/i386/stdlib/ldiv.S
index 578eff0..42ff160 100644
--- a/lib/libc/i386/stdlib/ldiv.S
+++ b/lib/libc/i386/stdlib/ldiv.S
@@ -1,41 +1,19 @@
/*
- * Copyright (c) 1993 Winning Strategies, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by Winning Strategies, Inc.
- * 4. The name of the author may not be used to endorse or promote products
- * derived from this software without specific prior written permission
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * Written by J.T. Conklin <jtc@netbsd.org>.
+ * Public domain.
*/
#include <machine/asm.h>
__FBSDID("$FreeBSD$");
ENTRY(ldiv)
- movl 4(%esp),%eax
- movl 8(%esp),%ecx
- cdq
- idiv %ecx
- movl %eax,4(%esp)
- movl %edx,8(%esp)
- ret
+ pushl %ebx
+ movl 8(%esp),%ebx
+ movl 12(%esp),%eax
+ movl 16(%esp),%ecx
+ cdq
+ idiv %ecx
+ movl %eax,(%ebx)
+ movl %edx,4(%ebx)
+ popl %ebx
+ ret $4
OpenPOWER on IntegriCloud