Messages in this thread | | | From | () | Subject | 1.3.82 include/asm/system.h:213: inconsistent operand constraints in an `asm' | Date | 02 Apr 1996 11:44:42 -0500 |
| |
The only assembler I know is 6502, so I can't debug it :( This is just a post without fix :)
While compiling 1.3.82:
make[2]: Entering directory `/usr/src/linux/net/core' make all_targets make[3]: Entering directory `/usr/src/linux/net/core' [...] gcc -D__KERNEL__ -I/usr/src/linux/include -Wall -Wstrict-prototypes -O3 -fomit-frame-pointer -pipe -m486 -malign-loops=2 -malign-jumps=2 -malign-functions=2 -DCPU=586 -c -o firewall.o firewall.c /usr/src/linux/include/asm/system.h: In function `unregister_firewall': /usr/src/linux/include/asm/system.h:213: inconsistent operand constraints in an `asm' make[3]: *** [firewall.o] Error 1 make[3]: Leaving directory `/usr/src/linux/net/core' make[2]: *** [first_rule] Error 2 make[2]: Leaving directory `/usr/src/linux/net/core' make[1]: *** [sub_dirs] Error 2 make[1]: Leaving directory `/usr/src/linux/net' make: *** [linuxsubdirs] Error 2 Q:~$ uname -a Linux Q.Net 1.3.81 #19 Sat Mar 30 12:56:45 EST 1996 i586 ^^^ [That's right, I did a make mrproper recently (I had it to around 250 :) ) (the make mrproper was a workaround as posted here recently)] Q:~$ gcc -v Reading specs from /usr/lib/gcc-lib/i586-unknown-linux/2.7.2/specs gcc version 2.7.2 Q:~$ as -v [isn't this irrelevent?] GNU assembler version cygnus/linux-2.5.2l.15 (i486-linux), using BFD version cygnus/linux-2.5.2l.11
The code piece (from /usr/src/linux/include/asm/system.h):
197 static inline unsigned long __xchg(unsigned long x, void * ptr, int size) 198 { 199 switch (size) { 200 case 1: 201 __asm__("xchgb %b0,%1" 202 :"=q" (x), "=m" (*__xg(ptr)) 203 :"0" (x), "m" (*__xg(ptr))); 204 break; 205 case 2: 206 __asm__("xchgw %w0,%1" 207 :"=r" (x), "=m" (*__xg(ptr)) 208 :"0" (x), "m" (*__xg(ptr))); 209 break; 210 case 4: 211 __asm__("xchgl %0,%1" 212 :"=r" (x), "=m" (*__xg(ptr)) **>213 :"0" (x), "m" (*__xg(ptr))); 214 break; 215 } 216 return x; 217 }
I can tell that b is 8bit, w 16bit, l 32bit; %0 must be 32bit. Or must it be %l0? No because lines 169-170 imply %1/%0 is correct. I'm baffled.
Irrelevent?:
Q:~$ grep '=[ym]' /usr/src/linux/.config CONFIG_MODULES=y CONFIG_MODVERSIONS=y CONFIG_KERNELD=y CONFIG_NET=y CONFIG_PCI=y CONFIG_PCI_OPTIMIZE=y CONFIG_SYSVIPC=y CONFIG_BINFMT_AOUT=y CONFIG_BINFMT_ELF=y CONFIG_KERNEL_ELF=y CONFIG_M586=y CONFIG_BLK_DEV_FD=m CONFIG_BLK_DEV_IDE=y CONFIG_BLK_DEV_IDECD=y CONFIG_BLK_DEV_TRITON=y CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_LOOP=y CONFIG_BLK_DEV_MD=y CONFIG_MD_LINEAR=y CONFIG_MD_STRIPED=y CONFIG_FIREWALL=y CONFIG_NET_ALIAS=y CONFIG_INET=y CONFIG_IP_FORWARD=y CONFIG_IP_MULTICAST=y CONFIG_IP_FIREWALL=y CONFIG_IP_ACCT=y CONFIG_IP_ROUTER=y CONFIG_NET_IPIP=y CONFIG_IP_FIREWALL_VERBOSE=y CONFIG_IP_MASQUERADE=y CONFIG_IP_MROUTE=y CONFIG_IP_ALIAS=y CONFIG_INET_PCTCP=y CONFIG_INET_RARP=m CONFIG_SKB_LARGE=y CONFIG_IPX=y CONFIG_ATALK=m CONFIG_NETLINK=y CONFIG_RTNETLINK=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_CHR_DEV_ST=m CONFIG_BLK_DEV_SR=m CONFIG_CHR_DEV_SG=m CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_AUTO_BIOSP=y CONFIG_SCSI_NCR53C7xx=y CONFIG_NETDEVICES=y CONFIG_DUMMY=m CONFIG_SLIP=y CONFIG_SLIP_COMPRESSED=y CONFIG_SLIP_SMART=y CONFIG_PPP=y CONFIG_PLIP=m CONFIG_EQUALIZER=m CONFIG_NET_ALPHA=y CONFIG_NET_VENDOR_3COM=y CONFIG_EL3=m CONFIG_ISDN=m CONFIG_ISDN_PPP=y CONFIG_ISDN_PPP_VJ=y CONFIG_ISDN_MPP=y CONFIG_ISDN_DRV_TELES=m CONFIG_ISDN_DRV_ICN=m CONFIG_QUOTA=y CONFIG_MINIX_FS=y CONFIG_EXT2_FS=y CONFIG_FAT_FS=y CONFIG_MSDOS_FS=y CONFIG_VFAT_FS=y CONFIG_UMSDOS_FS=y CONFIG_PROC_FS=y CONFIG_NFS_FS=y CONFIG_SMB_FS=m CONFIG_NCP_FS=m CONFIG_ISO9660_FS=y CONFIG_HPFS_FS=m CONFIG_SYSV_FS=m CONFIG_SERIAL=y CONFIG_PRINTER=m CONFIG_PSMOUSE=y CONFIG_WATCHDOG=y CONFIG_SOFT_WATCHDOG=y CONFIG_SOUND=y CONFIG_SB=y CONFIG_UART6850=y CONFIG_AUDIO=y CONFIG_MIDI=y CONFIG_YM3812=y ^^^^^^^^^^^^^^^^^^^^^^ I only use half of what I said y/m to.
(The reason my prompt says ~ is that I *am* in my home directory -- I use a nifty script that automatically checks for new kernels and does a full installation with only one or two button presses.)
| |