Module Name: src
Committed By: joerg
Date: Thu Jun 16 13:27:59 UTC 2011
Modified Files:
src/sys/arch/i386/include: cdefs.h
src/sys/arch/i386/stand/lib: bios_disk.S biosgetrtc.S biosgetsystime.S
biosmem.S biosmemps2.S biosreboot.S conio.S dosfile.c getextmemx.c
libi386.h
src/sys/arch/i386/stand/libsa: nfs.c
src/sys/lib/libsa: alloc.c cd9660.c dosfs.c ext2fs.c nfs.c nullfs.c
tftp.c ufs.c ustarfs.c
Log Message:
Add an optional MD calling convention flag for use in libsa when space
optimisation is critical. Use this on i386 to switch to register passing
calling convention for the file system entry points and most assembler
call backs that have to preserve at least 3 registers.
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/i386/include/cdefs.h
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/i386/stand/lib/bios_disk.S
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/i386/stand/lib/biosgetrtc.S \
src/sys/arch/i386/stand/lib/conio.S
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/i386/stand/lib/biosgetsystime.S
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/i386/stand/lib/biosmem.S
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/i386/stand/lib/biosmemps2.S
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/i386/stand/lib/biosreboot.S
cvs rdiff -u -r1.14 -r1.15 src/sys/arch/i386/stand/lib/dosfile.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/i386/stand/lib/getextmemx.c
cvs rdiff -u -r1.36 -r1.37 src/sys/arch/i386/stand/lib/libi386.h
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/i386/stand/libsa/nfs.c
cvs rdiff -u -r1.24 -r1.25 src/sys/lib/libsa/alloc.c
cvs rdiff -u -r1.26 -r1.27 src/sys/lib/libsa/cd9660.c
cvs rdiff -u -r1.16 -r1.17 src/sys/lib/libsa/dosfs.c
cvs rdiff -u -r1.9 -r1.10 src/sys/lib/libsa/ext2fs.c \
src/sys/lib/libsa/nullfs.c
cvs rdiff -u -r1.45 -r1.46 src/sys/lib/libsa/nfs.c
cvs rdiff -u -r1.31 -r1.32 src/sys/lib/libsa/tftp.c
cvs rdiff -u -r1.54 -r1.55 src/sys/lib/libsa/ufs.c
cvs rdiff -u -r1.32 -r1.33 src/sys/lib/libsa/ustarfs.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/i386/include/cdefs.h
diff -u src/sys/arch/i386/include/cdefs.h:1.7 src/sys/arch/i386/include/cdefs.h:1.8
--- src/sys/arch/i386/include/cdefs.h:1.7 Sun Oct 26 06:57:30 2008
+++ src/sys/arch/i386/include/cdefs.h Thu Jun 16 13:27:59 2011
@@ -1,8 +1,10 @@
-/* $NetBSD: cdefs.h,v 1.7 2008/10/26 06:57:30 mrg Exp $ */
+/* $NetBSD: cdefs.h,v 1.8 2011/06/16 13:27:59 joerg Exp $ */
#ifndef _I386_CDEFS_H_
#define _I386_CDEFS_H_
-/* No arch-specific cdefs. */
+#if defined(_STANDALONE)
+#define __compactcall __attribute__((__regparm__(3)))
+#endif
#endif /* !_I386_CDEFS_H_ */
Index: src/sys/arch/i386/stand/lib/bios_disk.S
diff -u src/sys/arch/i386/stand/lib/bios_disk.S:1.20 src/sys/arch/i386/stand/lib/bios_disk.S:1.21
--- src/sys/arch/i386/stand/lib/bios_disk.S:1.20 Wed Dec 29 22:40:46 2010
+++ src/sys/arch/i386/stand/lib/bios_disk.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: bios_disk.S,v 1.20 2010/12/29 22:40:46 jakllsch Exp $ */
+/* $NetBSD: bios_disk.S,v 1.21 2011/06/16 13:27:59 joerg Exp $ */
/*
* Ported to boot 386BSD by Julian Elischer ([email protected]) Sept 1992
@@ -63,13 +63,9 @@
* %al = 0x0 on success; err code on failure
*/
ENTRY(biosdisk_reset)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- push %edx
- push %edi
+ pusha
- movb 8(%ebp), %dl # device
+ movb %al, %dl # device
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -83,11 +79,9 @@
.code32
movzwl %bx, %eax # return value in %eax
+ movl %eax, 28(%esp)
- pop %edi
- pop %edx
- popl %ebx
- popl %ebp
+ popa
ret
/*
@@ -108,24 +102,18 @@
* sending another command.
*/
ENTRY(biosdisk_read)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- push %ecx
- push %edx
- push %esi
- push %edi
+ pusha
- movb 16(%ebp), %dh
- movw 12(%ebp), %cx
+ movb 44(%esp), %dh
+ movw 40(%esp), %cx
xchgb %ch, %cl # cylinder; the highest 2 bits of cyl is in %cl
rorb $2, %cl
- movb 20(%ebp), %al
+ movb 48(%esp), %al
orb %al, %cl
incb %cl # sector; sec starts from 1, not 0
- movb 8(%ebp), %dl # device
- movl 28(%ebp), %ebx # buffer address (may be >64k)
- movb 24(%ebp), %al # number of sectors
+ movb 36(%esp), %dl # device
+ movl 56(%esp), %ebx # buffer address (may be >64k)
+ movb 52(%esp), %al # number of sectors
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -145,14 +133,9 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- movzwl %ax, %eax # return value in %eax
+ movl %eax, 28(%esp)
- pop %edi
- pop %esi
- pop %edx
- pop %ecx
- popl %ebx
- popl %ebp
+ popa
ret
/*
@@ -160,16 +143,10 @@
* max number of sectors, heads and cylinders for this device
*/
ENTRY(biosdisk_getinfo)
- pushl %ebp
- movl %esp, %ebp
push %es
- pushl %ebx
- push %ecx
- push %edx
- push %esi
- push %edi
+ pusha
- movb 8(%ebp), %dl # diskinfo(drive #)
+ movb %al, %dl # diskinfo(drive #)
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -209,14 +186,10 @@
shrl $8, %ecx
movb %dh, %cl # max head
orl %ecx, %eax # return value in %eax
+ movl %eax, 28(%esp)
- pop %edi
- pop %esi
- pop %edx
- pop %ecx
- popl %ebx
+ popa
pop %es
- popl %ebp
ret
/*
@@ -224,15 +197,9 @@
* check for availibility of int13 extensions.
*/
ENTRY(biosdisk_int13ext)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- pushl %ecx
- pushl %edx
- pushl %esi
- pushl %edi
+ pusha
- movb 8(%ebp), %dl # drive #
+ movb %al, %dl # drive #
movw $0x55aa, %bx
call _C_LABEL(prot_to_real) # enter real mode
@@ -252,13 +219,9 @@
andb %dl, %al
andb %cl, %al
+ movl %eax, 28(%esp)
- popl %edi
- popl %esi
- popl %edx
- popl %ecx
- popl %ebx
- popl %ebp
+ popa
ret
/*
@@ -271,16 +234,10 @@
* %al = 0x0 on success; err code on failure
*/
ENTRY(biosdisk_extread)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- push %ecx
- push %edx
- push %esi
- push %edi
+ pusha
- movb 8(%ebp), %dl # device
- movl 12(%ebp), %esi # parameter block
+ movl %edx, %esi # parameter block
+ movb %al, %dl # device
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -303,26 +260,16 @@
.code32
movzwl %bx, %eax # return value in %eax
+ movl %eax, 28(%esp)
- pop %edi
- pop %esi
- pop %edx
- pop %ecx
- popl %ebx
- popl %ebp
+ popa
ret
ENTRY(biosdisk_getextinfo)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- push %ecx
- push %edx
- push %esi
- push %edi
+ pusha
- movb 8(%ebp), %dl # device
- movl 12(%ebp), %esi # parameter block
+ movl %edx, %esi # parameter block
+ movb %al, %dl # device
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -344,11 +291,7 @@
.code32
movzbl %bl, %eax # return value in %eax
+ movl %eax, 28(%esp)
- pop %edi
- pop %esi
- pop %edx
- pop %ecx
- popl %ebx
- popl %ebp
+ popa
ret
Index: src/sys/arch/i386/stand/lib/biosgetrtc.S
diff -u src/sys/arch/i386/stand/lib/biosgetrtc.S:1.6 src/sys/arch/i386/stand/lib/biosgetrtc.S:1.7
--- src/sys/arch/i386/stand/lib/biosgetrtc.S:1.6 Sun Dec 11 12:17:48 2005
+++ src/sys/arch/i386/stand/lib/biosgetrtc.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: biosgetrtc.S,v 1.6 2005/12/11 12:17:48 christos Exp $ */
+/* $NetBSD: biosgetrtc.S,v 1.7 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1996
@@ -29,13 +29,8 @@
#include <machine/asm.h>
ENTRY(biosgetrtc)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- pushl %ecx
- pushl %edx
- push %esi
- push %edi
+ pusha
+ pushl %eax
xorl %ebx, %ebx
@@ -51,18 +46,13 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- movl 8(%ebp), %eax
- movl $0, (%eax)
+ popl %eax
movb %ch, (%eax)
movb %cl, 1(%eax)
movb %dh, 2(%eax)
+ movb $0, 3(%eax)
- movl %ebx, %eax
+ movl %ebx, 28(%esp)
- pop %edi
- pop %esi
- popl %edx
- popl %ecx
- popl %ebx
- popl %ebp
+ popa
ret
Index: src/sys/arch/i386/stand/lib/conio.S
diff -u src/sys/arch/i386/stand/lib/conio.S:1.6 src/sys/arch/i386/stand/lib/conio.S:1.7
--- src/sys/arch/i386/stand/lib/conio.S:1.6 Wed May 21 01:51:34 2008
+++ src/sys/arch/i386/stand/lib/conio.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: conio.S,v 1.6 2008/05/21 01:51:34 ad Exp $ */
+/* $NetBSD: conio.S,v 1.7 2011/06/16 13:27:59 joerg Exp $ */
/* PC console handling
originally from: FreeBSD:sys/i386/boot/netboot/start2.S
@@ -12,14 +12,7 @@
CLR - Clear screen
**************************************************************************/
ENTRY(conclr)
- push %ebp
- mov %esp,%ebp
- push %ecx
- push %ebx
- push %esi
- push %edi
-
- movb 8(%ebp),%cl
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -40,53 +33,35 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- pop %edi
- pop %esi
- pop %ebx
- pop %ecx
- pop %ebp
+ popa
ret
/**************************************************************************
PUTC - Print a character
**************************************************************************/
ENTRY(conputc)
- push %ebp
- mov %esp,%ebp
- push %ecx
- push %ebx
- push %esi
- push %edi
-
- movb 8(%ebp),%cl
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
- movb %cl,%al
movw $1,%bx
movb $0x0e,%ah
+ movb %al, %cl
int $0x10
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- pop %edi
- pop %esi
- pop %ebx
- pop %ecx
- pop %ebp
+ popa
ret
/**************************************************************************
GETC - Get a character
**************************************************************************/
ENTRY(congetc)
- push %ebp
- mov %esp,%ebp
- push %ebx
- push %esi
- push %edi
+ xorl %eax, %eax
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -98,24 +73,17 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- xor %eax,%eax
- movb %bl,%al
+ movb %bl, 28(%esp)
- pop %edi
- pop %esi
- pop %ebx
- pop %ebp
+ popa
ret
/**************************************************************************
ISSHIFT - Check for keyboard interrupt; via shift key
**************************************************************************/
ENTRY(conisshift)
- push %ebp
- mov %esp,%ebp
- push %ebx
- push %esi
- push %edi
+ xorl %eax, %eax
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -129,24 +97,17 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- xor %eax,%eax
- movb %bl,%al
+ movb %bl, 28(%esp)
- pop %edi
- pop %esi
- pop %ebx
- pop %ebp
+ popa
ret
/**************************************************************************
ISKEY - Check for keyboard input
**************************************************************************/
ENTRY(coniskey)
- push %ebp
- mov %esp,%ebp
- push %ebx
- push %esi
- push %edi
+ xorl %eax, %eax
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -159,11 +120,7 @@
calll _C_LABEL(real_to_prot) # back to protected mode
.code32
- xor %eax,%eax
- movb %bl,%al
+ movb %bl, 28(%esp)
- pop %edi
- pop %esi
- pop %ebx
- pop %ebp
+ popa
ret
Index: src/sys/arch/i386/stand/lib/biosgetsystime.S
diff -u src/sys/arch/i386/stand/lib/biosgetsystime.S:1.2 src/sys/arch/i386/stand/lib/biosgetsystime.S:1.3
--- src/sys/arch/i386/stand/lib/biosgetsystime.S:1.2 Mon Apr 28 20:23:25 2008
+++ src/sys/arch/i386/stand/lib/biosgetsystime.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: biosgetsystime.S,v 1.2 2008/04/28 20:23:25 martin Exp $ */
+/* $NetBSD: biosgetsystime.S,v 1.3 2011/06/16 13:27:59 joerg Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -34,13 +34,7 @@
/* Return system time (~18.2Hz ticks since midnight) */
ENTRY(biosgetsystime)
- pushl %ebp
- movl %esp, %ebp
- pushl %ebx
- pushl %ecx
- pushl %edx
- push %esi
- push %edi
+ pusha
call _C_LABEL(prot_to_real) # enter real mode
.code16
@@ -54,11 +48,7 @@
mov %ecx, %eax
shl $16, %eax
movw %dx, %ax
+ movl %eax, 28(%esp)
- pop %edi
- pop %esi
- popl %edx
- popl %ecx
- popl %ebx
- popl %ebp
+ popa
ret
Index: src/sys/arch/i386/stand/lib/biosmem.S
diff -u src/sys/arch/i386/stand/lib/biosmem.S:1.8 src/sys/arch/i386/stand/lib/biosmem.S:1.9
--- src/sys/arch/i386/stand/lib/biosmem.S:1.8 Sun Dec 11 12:17:48 2005
+++ src/sys/arch/i386/stand/lib/biosmem.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: biosmem.S,v 1.8 2005/12/11 12:17:48 christos Exp $ */
+/* $NetBSD: biosmem.S,v 1.9 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1996
@@ -39,39 +39,26 @@
/* get mem below 1M, in kByte */
ENTRY(getbasemem)
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- push %esi
- push %edi
+ pusha
call _C_LABEL(prot_to_real)
.code16
int $0x12
# zero-extend 16-bit result to 32 bits.
- movl $0, %ebx
- mov %ax,%bx
+ movzwl %ax, %eax
calll _C_LABEL(real_to_prot)
.code32
- movl %ebx, %eax
-
- pop %edi
- pop %esi
- popl %ebx
- popl %ebp
+ movl %eax, 28(%esp)
+ popa
ret
/* get mem above 1M, in kByte */
ENTRY(getextmem1)
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- push %esi
- push %edi
+ pusha
call _C_LABEL(prot_to_real)
.code16
@@ -80,17 +67,12 @@
int $0x15
# zero-extend 16-bit result to 32 bits.
- movl $0, %ebx
- mov %ax,%bx
+ movzwl %ax, %eax
calll _C_LABEL(real_to_prot)
.code32
- movl %ebx, %eax
-
- pop %edi
- pop %esi
- popl %ebx
- popl %ebp
+ movl %eax, 28(%esp)
+ popa
ret
Index: src/sys/arch/i386/stand/lib/biosmemps2.S
diff -u src/sys/arch/i386/stand/lib/biosmemps2.S:1.5 src/sys/arch/i386/stand/lib/biosmemps2.S:1.6
--- src/sys/arch/i386/stand/lib/biosmemps2.S:1.5 Sun Feb 20 05:45:48 2011
+++ src/sys/arch/i386/stand/lib/biosmemps2.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: biosmemps2.S,v 1.5 2011/02/20 05:45:48 jakllsch Exp $ */
+/* $NetBSD: biosmemps2.S,v 1.6 2011/06/16 13:27:59 joerg Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -40,15 +40,9 @@
*/
ENTRY(getextmemps2)
.code32
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- pushl %ecx
- pushl %edx
- push %esi
- push %edi
-
- movl 8(%ebp), %edx # parameter
+ movl %eax, %edx
+ xorl %eax, %eax
+ pusha
call _C_LABEL(prot_to_real)
.code16
@@ -88,12 +82,6 @@
calll _C_LABEL(real_to_prot)
.code32
- movzbl %cl, %eax # return value in %eax
-
- pop %edi
- pop %esi
- popl %edx
- popl %ecx
- popl %ebx
- popl %ebp
+ movb %cl, 28(%esp)
+ popa
ret
Index: src/sys/arch/i386/stand/lib/biosreboot.S
diff -u src/sys/arch/i386/stand/lib/biosreboot.S:1.4 src/sys/arch/i386/stand/lib/biosreboot.S:1.5
--- src/sys/arch/i386/stand/lib/biosreboot.S:1.4 Sun Dec 11 12:17:48 2005
+++ src/sys/arch/i386/stand/lib/biosreboot.S Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: biosreboot.S,v 1.4 2005/12/11 12:17:48 christos Exp $ */
+/* $NetBSD: biosreboot.S,v 1.5 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1997
@@ -40,11 +40,7 @@
/* Call INT 19 to do the equivalent of CTL-ALT-DEL */
ENTRY(reboot)
- pushl %ebp
- movl %esp,%ebp
- pushl %ebx
- push %esi
- push %edi
+ pusha
call _C_LABEL(prot_to_real)
.code16
@@ -56,10 +52,6 @@
calll _C_LABEL(real_to_prot)
.code32
- movl %ebx, %eax
-
- pop %edi
- pop %esi
- popl %ebx
- popl %ebp
+ movl %ebx, 28(%esp)
+ popa
ret
Index: src/sys/arch/i386/stand/lib/dosfile.c
diff -u src/sys/arch/i386/stand/lib/dosfile.c:1.14 src/sys/arch/i386/stand/lib/dosfile.c:1.15
--- src/sys/arch/i386/stand/lib/dosfile.c:1.14 Sun Dec 14 17:03:43 2008
+++ src/sys/arch/i386/stand/lib/dosfile.c Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dosfile.c,v 1.14 2008/12/14 17:03:43 christos Exp $ */
+/* $NetBSD: dosfile.c,v 1.15 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1996
@@ -72,7 +72,7 @@
return err;
}
-int
+__compactcall int
dos_open(const char *path, struct open_file *f)
{
struct dosfile *df;
@@ -94,7 +94,7 @@
return 0;
}
-int
+__compactcall int
dos_read(struct open_file *f, void *addr, size_t size, size_t *resid)
{
struct dosfile *df;
@@ -156,7 +156,7 @@
return 0;
}
-int
+__compactcall int
dos_close(struct open_file *f)
{
struct dosfile *df;
@@ -169,13 +169,13 @@
return 0;
}
-int
+__compactcall int
dos_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
return EROFS;
}
-int
+__compactcall int
dos_stat(struct open_file *f, struct stat *sb)
{
struct dosfile *df;
@@ -189,7 +189,7 @@
return 0;
}
-off_t
+__compactcall off_t
dos_seek(struct open_file *f, off_t offset, int where)
{
struct dosfile *df;
Index: src/sys/arch/i386/stand/lib/getextmemx.c
diff -u src/sys/arch/i386/stand/lib/getextmemx.c:1.9 src/sys/arch/i386/stand/lib/getextmemx.c:1.10
--- src/sys/arch/i386/stand/lib/getextmemx.c:1.9 Sun Dec 14 17:03:43 2008
+++ src/sys/arch/i386/stand/lib/getextmemx.c Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: getextmemx.c,v 1.9 2008/12/14 17:03:43 christos Exp $ */
+/* $NetBSD: getextmemx.c,v 1.10 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1997, 1999
@@ -35,10 +35,6 @@
#include <lib/libsa/stand.h>
#include "libi386.h"
-extern int getextmem2(int *);
-extern int getmementry(int *, int *);
-extern int getextmemps2(void *);
-
int
getextmemx(void)
{
Index: src/sys/arch/i386/stand/lib/libi386.h
diff -u src/sys/arch/i386/stand/lib/libi386.h:1.36 src/sys/arch/i386/stand/lib/libi386.h:1.37
--- src/sys/arch/i386/stand/lib/libi386.h:1.36 Thu May 26 04:25:27 2011
+++ src/sys/arch/i386/stand/lib/libi386.h Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: libi386.h,v 1.36 2011/05/26 04:25:27 uebayasi Exp $ */
+/* $NetBSD: libi386.h,v 1.37 2011/06/16 13:27:59 joerg Exp $ */
/*
* Copyright (c) 1996
@@ -98,30 +98,30 @@
extern const struct bootblk_command commands[];
/* asm bios/dos calls */
-int biosdisk_extread(int, void *);
+__compactcall int biosdisk_extread(int, void *);
int biosdisk_read(int, int, int, int, int, void *);
-int biosdisk_reset(int);
+__compactcall int biosdisk_reset(int);
-int biosgetrtc(u_long *);
+__compactcall int biosgetrtc(u_long *);
int biosgetsystime(void);
int comgetc(int);
void cominit(int);
-int computc(int, int);
+__compactcall int computc(int, int);
int comstatus(int);
int congetc(void);
int conisshift(void);
int coniskey(void);
-void conputc(int);
+__compactcall void conputc(int);
void conclr(void);
int getextmem2(int *);
-int getextmemps2(void *);
+__compactcall int getextmemps2(void *);
int getmementry(int *, int *);
-int biosdisk_int13ext(int);
-int biosdisk_getinfo(int);
+__compactcall int biosdisk_int13ext(int);
+__compactcall int biosdisk_getinfo(int);
struct biosdisk_extinfo;
-int biosdisk_getextinfo(int, struct biosdisk_extinfo *);
+__compactcall int biosdisk_getextinfo(int, struct biosdisk_extinfo *);
int get_harddrives(void);
void biosdisk_probe(void);
Index: src/sys/arch/i386/stand/libsa/nfs.c
diff -u src/sys/arch/i386/stand/libsa/nfs.c:1.17 src/sys/arch/i386/stand/libsa/nfs.c:1.18
--- src/sys/arch/i386/stand/libsa/nfs.c:1.17 Sat Mar 14 21:04:10 2009
+++ src/sys/arch/i386/stand/libsa/nfs.c Thu Jun 16 13:27:59 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs.c,v 1.17 2009/03/14 21:04:10 dsl Exp $ */
+/* $NetBSD: nfs.c,v 1.18 2011/06/16 13:27:59 joerg Exp $ */
/*-
* Copyright (c) 1993 John Brezak
@@ -333,7 +333,7 @@
* Open a file.
* return zero or error number
*/
-int
+__compactcall int
nfs_open(const char *path, struct open_file *f)
{
static struct nfs_iodesc nfs_root_node;
@@ -510,7 +510,7 @@
return (error);
}
-int
+__compactcall int
nfs_close(struct open_file *f)
{
struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
@@ -530,7 +530,7 @@
/*
* read a portion of a file
*/
-int
+__compactcall int
nfs_read(struct open_file *f, void *buf, size_t size, size_t *resid)
/* resid: out */
{
@@ -577,7 +577,7 @@
/*
* Not implemented.
*/
-int
+__compactcall int
nfs_write(struct open_file *f, void *buf, size_t size, size_t *resid)
/* resid: out */
{
@@ -585,7 +585,7 @@
return (EROFS);
}
-off_t
+__compactcall off_t
nfs_seek(struct open_file *f, off_t offset, int where)
{
struct nfs_iodesc *d = (struct nfs_iodesc *)f->f_fsdata;
@@ -612,7 +612,7 @@
const int nfs_stat_types[8] = {
0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, 0 };
-int
+__compactcall int
nfs_stat(struct open_file *f, struct stat *sb)
{
struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
Index: src/sys/lib/libsa/alloc.c
diff -u src/sys/lib/libsa/alloc.c:1.24 src/sys/lib/libsa/alloc.c:1.25
--- src/sys/lib/libsa/alloc.c:1.24 Sat Dec 25 01:08:44 2010
+++ src/sys/lib/libsa/alloc.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: alloc.c,v 1.24 2010/12/25 01:08:44 jakllsch Exp $ */
+/* $NetBSD: alloc.c,v 1.25 2011/06/16 13:27:58 joerg Exp $ */
/*
* Copyright (c) 1993
@@ -162,7 +162,7 @@
static char *top = (char *)HEAP_START;
#endif /* HEAP_VARIABLE */
-void *
+__compactcall void *
alloc(size_t size)
{
struct fl **f = &freelist, **bestf = NULL;
@@ -239,7 +239,7 @@
return help + ALIGN(sizeof(unsigned int));
}
-void
+__compactcall void
/*ARGSUSED*/
dealloc(void *ptr, size_t size)
{
Index: src/sys/lib/libsa/cd9660.c
diff -u src/sys/lib/libsa/cd9660.c:1.26 src/sys/lib/libsa/cd9660.c:1.27
--- src/sys/lib/libsa/cd9660.c:1.26 Mon Oct 18 11:08:26 2010
+++ src/sys/lib/libsa/cd9660.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: cd9660.c,v 1.26 2010/10/18 11:08:26 ws Exp $ */
+/* $NetBSD: cd9660.c,v 1.27 2011/06/16 13:27:58 joerg Exp $ */
/*
* Copyright (C) 1996 Wolfgang Solfrank.
@@ -129,7 +129,7 @@
return 1;
}
-int
+__compactcall int
cd9660_open(const char *path, struct open_file *f)
{
struct file *fp = 0;
@@ -291,7 +291,7 @@
}
#if !defined(LIBSA_NO_FS_CLOSE)
-int
+__compactcall int
cd9660_close(struct open_file *f)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -303,7 +303,7 @@
}
#endif /* !defined(LIBSA_NO_FS_CLOSE) */
-int
+__compactcall int
cd9660_read(struct open_file *f, void *start, size_t size, size_t *resid)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -354,7 +354,7 @@
}
#if !defined(LIBSA_NO_FS_WRITE)
-int
+__compactcall int
cd9660_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
@@ -363,7 +363,7 @@
#endif /* !defined(LIBSA_NO_FS_WRITE) */
#if !defined(LIBSA_NO_FS_SEEK)
-off_t
+__compactcall off_t
cd9660_seek(struct open_file *f, off_t offset, int where)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -385,7 +385,7 @@
}
#endif /* !defined(LIBSA_NO_FS_SEEK) */
-int
+__compactcall int
cd9660_stat(struct open_file *f, struct stat *sb)
{
struct file *fp = (struct file *)f->f_fsdata;
Index: src/sys/lib/libsa/dosfs.c
diff -u src/sys/lib/libsa/dosfs.c:1.16 src/sys/lib/libsa/dosfs.c:1.17
--- src/sys/lib/libsa/dosfs.c:1.16 Mon Nov 24 11:27:20 2008
+++ src/sys/lib/libsa/dosfs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: dosfs.c,v 1.16 2008/11/24 11:27:20 ad Exp $ */
+/* $NetBSD: dosfs.c,v 1.17 2011/06/16 13:27:58 joerg Exp $ */
/*
* Copyright (c) 1996, 1998 Robert Nordier
@@ -218,7 +218,7 @@
/*
* Open DOS file
*/
-int
+__compactcall int
dosfs_open(const char *path, struct open_file *fd)
{
const struct direntry *de;
@@ -270,7 +270,7 @@
/*
* Read from file
*/
-int
+__compactcall int
dosfs_read(struct open_file *fd, void *vbuf, size_t nbyte, size_t *resid)
{
off_t size;
@@ -327,7 +327,7 @@
/*
* Not implemented.
*/
-int
+__compactcall int
dosfs_write(struct open_file *fd, void *start, size_t size, size_t *resid)
{
@@ -339,7 +339,7 @@
/*
* Reposition within file
*/
-off_t
+__compactcall off_t
dosfs_seek(struct open_file *fd, off_t offset, int whence)
{
off_t off;
@@ -373,7 +373,7 @@
/*
* Close open file
*/
-int
+__compactcall int
dosfs_close(struct open_file *fd)
{
DOS_FILE *f = (DOS_FILE *)fd->f_fsdata;
@@ -389,7 +389,7 @@
/*
* Return some stat information on a file.
*/
-int
+__compactcall int
dosfs_stat(struct open_file *fd, struct stat *sb)
{
DOS_FILE *f = (DOS_FILE *)fd->f_fsdata;
Index: src/sys/lib/libsa/ext2fs.c
diff -u src/sys/lib/libsa/ext2fs.c:1.9 src/sys/lib/libsa/ext2fs.c:1.10
--- src/sys/lib/libsa/ext2fs.c:1.9 Sun Jan 2 21:37:01 2011
+++ src/sys/lib/libsa/ext2fs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: ext2fs.c,v 1.9 2011/01/02 21:37:01 jakllsch Exp $ */
+/* $NetBSD: ext2fs.c,v 1.10 2011/06/16 13:27:58 joerg Exp $ */
/*
* Copyright (c) 1997 Manuel Bouyer.
@@ -485,7 +485,7 @@
/*
* Open a file.
*/
-int
+__compactcall int
ext2fs_open(const char *path, struct open_file *f)
{
#ifndef LIBSA_FS_SINGLECOMPONENT
@@ -695,7 +695,7 @@
return rc;
}
-int
+__compactcall int
ext2fs_close(struct open_file *f)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -718,7 +718,7 @@
* Copy a portion of a file into kernel memory.
* Cross block boundaries when necessary.
*/
-int
+__compactcall int
ext2fs_read(struct open_file *f, void *start, size_t size, size_t *resid)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -756,7 +756,7 @@
* Not implemented.
*/
#ifndef LIBSA_NO_FS_WRITE
-int
+__compactcall int
ext2fs_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
@@ -765,7 +765,7 @@
#endif /* !LIBSA_NO_FS_WRITE */
#ifndef LIBSA_NO_FS_SEEK
-off_t
+__compactcall off_t
ext2fs_seek(struct open_file *f, off_t offset, int where)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -788,7 +788,7 @@
}
#endif /* !LIBSA_NO_FS_SEEK */
-int
+__compactcall int
ext2fs_stat(struct open_file *f, struct stat *sb)
{
struct file *fp = (struct file *)f->f_fsdata;
Index: src/sys/lib/libsa/nullfs.c
diff -u src/sys/lib/libsa/nullfs.c:1.9 src/sys/lib/libsa/nullfs.c:1.10
--- src/sys/lib/libsa/nullfs.c:1.9 Sun Dec 11 12:24:46 2005
+++ src/sys/lib/libsa/nullfs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: nullfs.c,v 1.9 2005/12/11 12:24:46 christos Exp $ */
+/* $NetBSD: nullfs.c,v 1.10 2011/06/16 13:27:58 joerg Exp $ */
/*-
* Copyright (c) 1993
@@ -66,7 +66,7 @@
* Null filesystem
*/
-int
+__compactcall int
null_open(const char *path, struct open_file *f)
{
@@ -74,7 +74,7 @@
}
#ifndef LIBSA_NO_FS_CLOSE
-int
+__compactcall int
null_close(struct open_file *f)
{
@@ -82,7 +82,7 @@
}
#endif
-int
+__compactcall int
null_read(struct open_file *f, void *buf, size_t size, size_t *resid)
{
@@ -90,7 +90,7 @@
}
#ifndef LIBSA_NO_FS_WRITE
-int
+__compactcall int
null_write(struct open_file *f, void *buf, size_t size, size_t *resid)
{
@@ -99,7 +99,7 @@
#endif
#ifndef LIBSA_NO_FS_SEEK
-off_t
+__compactcall off_t
null_seek(struct open_file *f, off_t offset, int where)
{
@@ -107,7 +107,7 @@
}
#endif
-int
+__compactcall int
null_stat(struct open_file *f, struct stat *sb)
{
Index: src/sys/lib/libsa/nfs.c
diff -u src/sys/lib/libsa/nfs.c:1.45 src/sys/lib/libsa/nfs.c:1.46
--- src/sys/lib/libsa/nfs.c:1.45 Sat Jan 17 14:00:36 2009
+++ src/sys/lib/libsa/nfs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: nfs.c,v 1.45 2009/01/17 14:00:36 tsutsui Exp $ */
+/* $NetBSD: nfs.c,v 1.46 2011/06/16 13:27:58 joerg Exp $ */
/*-
* Copyright (c) 1993 John Brezak
@@ -382,7 +382,7 @@
* Open a file.
* return zero or error number
*/
-int
+__compactcall int
nfs_open(const char *path, struct open_file *f)
{
struct nfs_iodesc *newfd, *currfd;
@@ -537,7 +537,7 @@
return error;
}
-int
+__compactcall int
nfs_close(struct open_file *f)
{
struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
@@ -557,7 +557,7 @@
/*
* read a portion of a file
*/
-int
+__compactcall int
nfs_read(struct open_file *f, void *buf, size_t size, size_t *resid)
{
struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
@@ -604,13 +604,13 @@
/*
* Not implemented.
*/
-int
+__compactcall int
nfs_write(struct open_file *f, void *buf, size_t size, size_t *resid)
{
return EROFS;
}
-off_t
+__compactcall off_t
nfs_seek(struct open_file *f, off_t offset, int where)
{
struct nfs_iodesc *d = (struct nfs_iodesc *)f->f_fsdata;
@@ -637,7 +637,7 @@
const int nfs_stat_types[8] = {
0, S_IFREG, S_IFDIR, S_IFBLK, S_IFCHR, S_IFLNK, 0 };
-int
+__compactcall int
nfs_stat(struct open_file *f, struct stat *sb)
{
struct nfs_iodesc *fp = (struct nfs_iodesc *)f->f_fsdata;
Index: src/sys/lib/libsa/tftp.c
diff -u src/sys/lib/libsa/tftp.c:1.31 src/sys/lib/libsa/tftp.c:1.32
--- src/sys/lib/libsa/tftp.c:1.31 Wed May 11 16:23:40 2011
+++ src/sys/lib/libsa/tftp.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tftp.c,v 1.31 2011/05/11 16:23:40 zoltan Exp $ */
+/* $NetBSD: tftp.c,v 1.32 2011/06/16 13:27:58 joerg Exp $ */
/*
* Copyright (c) 1996
@@ -248,7 +248,7 @@
}
#endif
-int
+__compactcall int
tftp_open(const char *path, struct open_file *f)
{
struct tftp_handle *tftpfile;
@@ -275,7 +275,7 @@
return 0;
}
-int
+__compactcall int
tftp_read(struct open_file *f, void *addr, size_t size, size_t *resid)
{
struct tftp_handle *tftpfile;
@@ -356,7 +356,7 @@
return 0;
}
-int
+__compactcall int
tftp_close(struct open_file *f)
{
struct tftp_handle *tftpfile;
@@ -372,7 +372,7 @@
return 0;
}
-int
+__compactcall int
tftp_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
@@ -415,7 +415,7 @@
return filesize;
}
-int
+__compactcall int
tftp_stat(struct open_file *f, struct stat *sb)
{
struct tftp_handle *tftpfile;
@@ -429,7 +429,7 @@
return 0;
}
-off_t
+__compactcall off_t
tftp_seek(struct open_file *f, off_t offset, int where)
{
struct tftp_handle *tftpfile;
Index: src/sys/lib/libsa/ufs.c
diff -u src/sys/lib/libsa/ufs.c:1.54 src/sys/lib/libsa/ufs.c:1.55
--- src/sys/lib/libsa/ufs.c:1.54 Wed Nov 19 12:36:41 2008
+++ src/sys/lib/libsa/ufs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: ufs.c,v 1.54 2008/11/19 12:36:41 ad Exp $ */
+/* $NetBSD: ufs.c,v 1.55 2011/06/16 13:27:58 joerg Exp $ */
/*-
* Copyright (c) 1993
@@ -513,7 +513,7 @@
/*
* Open a file.
*/
-int
+__compactcall int
ufs_open(const char *path, struct open_file *f)
{
#ifndef LIBSA_FS_SINGLECOMPONENT
@@ -750,7 +750,7 @@
return rc;
}
-int
+__compactcall int
ufs_close(struct open_file *f)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -770,7 +770,7 @@
* Copy a portion of a file into kernel memory.
* Cross block boundaries when necessary.
*/
-int
+__compactcall int
ufs_read(struct open_file *f, void *start, size_t size, size_t *resid)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -807,7 +807,7 @@
* Not implemented.
*/
#ifndef LIBSA_NO_FS_WRITE
-int
+__compactcall int
ufs_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
@@ -816,7 +816,7 @@
#endif /* !LIBSA_NO_FS_WRITE */
#ifndef LIBSA_NO_FS_SEEK
-off_t
+__compactcall off_t
ufs_seek(struct open_file *f, off_t offset, int where)
{
struct file *fp = (struct file *)f->f_fsdata;
@@ -838,7 +838,7 @@
}
#endif /* !LIBSA_NO_FS_SEEK */
-int
+__compactcall int
ufs_stat(struct open_file *f, struct stat *sb)
{
struct file *fp = (struct file *)f->f_fsdata;
Index: src/sys/lib/libsa/ustarfs.c
diff -u src/sys/lib/libsa/ustarfs.c:1.32 src/sys/lib/libsa/ustarfs.c:1.33
--- src/sys/lib/libsa/ustarfs.c:1.32 Sat Jan 17 14:00:36 2009
+++ src/sys/lib/libsa/ustarfs.c Thu Jun 16 13:27:58 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: ustarfs.c,v 1.32 2009/01/17 14:00:36 tsutsui Exp $ */
+/* $NetBSD: ustarfs.c,v 1.33 2011/06/16 13:27:58 joerg Exp $ */
/* [Notice revision 2.2]
* Copyright (c) 1997, 1998 Avalon Computer Systems, Inc.
@@ -381,7 +381,7 @@
return 0;
}
-int
+__compactcall int
ustarfs_open(const char *path, struct open_file *f)
{
ust_active_t *ustf;
@@ -442,7 +442,7 @@
}
#ifndef LIBSA_NO_FS_WRITE
-int
+__compactcall int
ustarfs_write(struct open_file *f, void *start, size_t size, size_t *resid)
{
@@ -451,7 +451,7 @@
#endif /* !LIBSA_NO_FS_WRITE */
#ifndef LIBSA_NO_FS_SEEK
-off_t
+__compactcall off_t
ustarfs_seek(struct open_file *f, off_t offs, int whence)
{
ust_active_t *ustf;
@@ -474,7 +474,7 @@
}
#endif /* !LIBSA_NO_FS_SEEK */
-int
+__compactcall int
ustarfs_read(struct open_file *f, void *start, size_t size, size_t *resid)
{
ust_active_t *ustf;
@@ -517,7 +517,7 @@
return e;
}
-int
+__compactcall int
ustarfs_stat(struct open_file *f, struct stat *sb)
{
int mode, uid, gid;
@@ -538,7 +538,7 @@
}
#ifndef LIBSA_NO_FS_CLOSE
-int
+__compactcall int
ustarfs_close(struct open_file *f)
{
if (f == NULL || f->f_fsdata == NULL)