Date: Sat, 6 Nov 1999 15:11:48 -0800 From: "David O'Brien" <obrien@freebsd.org> To: Gary Jennejohn <garyj@muc.de> Cc: freebsd-current@freebsd.org Subject: Re: show stopper for Gcc 2.95.2 conversion Message-ID: <19991106151148.B5642@dragon.nuxi.com> In-Reply-To: <199911060934.KAA00510@peedub.muc.de>; from garyj@peedub.muc.de on Sat, Nov 06, 1999 at 10:34:18AM %2B0100 References: <Pine.BSF.4.10.9911061555100.5557-100000@alphplex.bde.org> <199911060934.KAA00510@peedub.muc.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Nov 06, 1999 at 10:34:18AM +0100, Gary Jennejohn wrote: > Here's a patch to bus.h which works for both EGCS and GCC 2.95.2. I have Here is the patch I've been working on (before I 1st got BDE's reply). The changes are mostly from OpenBSD + style changes for the way we do things. Can you also test this one? Index: bus.h =================================================================== RCS file: /home/ncvs/src/sys/i386/include/bus.h,v retrieving revision 1.6 diff -u -r1.6 bus.h --- bus.h 1999/08/28 00:44:07 1.6 +++ bus.h 1999/11/06 21:42:15 @@ -252,15 +252,14 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ - 1: movb (%1),%%al \n\ + 1: movb (%2),%%al \n\ stosb \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "D" (addr), "c" (count) : - "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory"); } #endif } @@ -280,15 +279,14 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ - 1: movw (%1),%%ax \n\ + 1: movw (%2),%%ax \n\ stosw \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "D" (addr), "c" (count) : - "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory"); } #endif } @@ -308,15 +306,14 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ - 1: movl (%1),%%eax \n\ + 1: movl (%2),%%eax \n\ stosl \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "D" (addr), "c" (count) : - "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory"); } #endif } @@ -355,16 +352,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ - 1: inb %w1,%%al \n\ + 1: inb %w2,%%al \n\ stosb \n\ - incl %1 \n\ + incl %2 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "D" (addr), "c" (count) : - "%edx", "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count), "=d" (_port_) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -372,13 +369,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsb" : - : - "S" (bsh + offset), "D" (addr), "c" (count) : - "%esi", "%edi", "%ecx", "memory"); + "=S" (_port_), "=D" (addr), "=c" (count) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "memory", "cc"); } #endif } @@ -392,16 +390,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ - 1: inw %w1,%%ax \n\ + 1: inw %w2,%%ax \n\ stosw \n\ - addl $2,%1 \n\ + addl $2,%2 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "D" (addr), "c" (count) : - "%edx", "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count), "=d" (_port_) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -409,13 +407,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsw" : - : - "S" (bsh + offset), "D" (addr), "c" (count) : - "%esi", "%edi", "%ecx", "memory"); + "=S" (_port_), "=D" (addr), "=c" (count) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "memory", "cc"); } #endif } @@ -429,16 +428,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ - 1: inl %w1,%%eax \n\ + 1: inl %w2,%%eax \n\ stosl \n\ - addl $4,%1 \n\ + addl $4,%2 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "D" (addr), "c" (count) : - "%edx", "%edi", "%ecx", "memory"); + "=D" (addr), "=c" (count), "=d" (_port_) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -446,13 +445,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsl" : - : - "S" (bsh + offset), "D" (addr), "c" (count) : - "%esi", "%edi", "%ecx", "memory"); + "=S" (_port_), "=D" (addr), "=c" (count) : + "0" (addr), "1" (count), "2" (bsh + offset) : + "memory", "cc"); } #endif } @@ -573,15 +573,14 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ 1: lodsb \n\ - movb %%al,(%1) \n\ + movb %%al,(%2) \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "S" (addr), "c" (count) : - "%esi", "%ecx"); + "=S" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory", "cc"); } #endif } @@ -601,15 +600,15 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ 1: lodsw \n\ movw %%ax,(%1) \n\ + movw %%ax,(%2) \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "S" (addr), "c" (count) : - "%esi", "%ecx"); + "=S" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory", "cc"); } #endif } @@ -629,15 +628,14 @@ else #endif { - int __x __asm__("%eax"); __asm __volatile(" \n\ cld \n\ 1: lodsl \n\ - movl %%eax,(%1) \n\ + movl %%eax,(%2) \n\ loop 1b" : - "=&a" (__x) : - "r" (bsh + offset), "S" (addr), "c" (count) : - "%esi", "%ecx"); + "=S" (addr), "=c" (count) : + "r" (bsh + offset), "0" (addr), "1" (count) : + "%eax", "memory", "cc"); } #endif } @@ -677,16 +675,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ 1: lodsb \n\ outb %%al,%w1 \n\ incl %1 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "S" (addr), "c" (count) : - "%edx", "%esi", "%ecx", "memory"); + "=S" (addr), "=c" (count), "=d" (_port_) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -694,13 +692,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsb" : - : - "D" (bsh + offset), "S" (addr), "c" (count) : - "%edi", "%esi", "%ecx", "memory"); + "=S" (addr), "=D" (_port_), "=c" (count) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "memory", "cc"); } #endif } @@ -714,16 +713,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ 1: lodsw \n\ outw %%ax,%w1 \n\ addl $2,%1 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "S" (addr), "c" (count) : - "%edx", "%esi", "%ecx", "memory"); + "=S" (addr), "=c" (count), "=d" (_port_) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -731,13 +730,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsw" : - : - "D" (bsh + offset), "S" (addr), "c" (count) : - "%edi", "%esi", "%ecx", "memory"); + "=S" (addr), "=D" (_port_), "=c" (count) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "memory", "cc"); } #endif } @@ -751,16 +751,16 @@ if (tag == I386_BUS_SPACE_IO) #endif { - int __x __asm__("%eax"); + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ 1: lodsl \n\ outl %%eax,%w1 \n\ addl $4,%1 \n\ loop 1b" : - "=&a" (__x) : - "d" (bsh + offset), "S" (addr), "c" (count) : - "%edx", "%esi", "%ecx", "memory"); + "=S" (addr), "=c" (count), "=d" (_port_) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "%eax", "memory", "cc"); } #endif #if defined(_I386_BUS_MEMIO_H_) @@ -768,13 +768,14 @@ else #endif { + int _port_ = bsh + offset; \ __asm __volatile(" \n\ cld \n\ repne \n\ movsl" : - : - "D" (bsh + offset), "S" (addr), "c" (count) : - "%edi", "%esi", "%ecx", "memory"); + "=S" (addr), "=D" (_port_), "=c" (count) : + "0" (bsh + offset), "1" (addr), "2" (count) : + "memory", "cc"); } #endif } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991106151148.B5642>