struct return. For example, GCC and LLVM comply with this (tested on IA32). ACK doesn't seem to follow this convention and expects the caller to clean up the stack. Compiling hand-written ACK-compliant assembly code (returning a struct) with GCC or LLVM used to break things (4-bytes misaligned stack). The patch fixes this problem.
22 lines
502 B
ArmAsm
22 lines
502 B
ArmAsm
/* add64u() - unsigned to 64 bit addition Author: Kees J. Bot */
|
|
/* 7 Dec 1995 */
|
|
#include <minix/compiler.h>
|
|
|
|
.text
|
|
.globl _add64u, _add64ul
|
|
|
|
_add64u:
|
|
/* u64_t add64u(u64_t i, unsigned j); */
|
|
_add64ul:
|
|
/* u64_t add64ul(u64_t i, unsigned long j); */
|
|
movl 4(%esp), %eax
|
|
movl 8(%esp), %edx
|
|
addl 16(%esp), %edx
|
|
movl %edx, (%eax)
|
|
movl 12(%esp), %edx
|
|
adcl $0, %edx
|
|
movl %edx, 4(%eax)
|
|
ret BYTES_TO_POP_ON_STRUCT_RETURN
|
|
|
|
/* */
|
|
/* $PchId: add64u.ack.s,v 1.2 1996/04/11 18:59:57 philip Exp $ */
|