summaryrefslogtreecommitdiff
path: root/recipes/linux/linux-geodegx-2.4.24
diff options
context:
space:
mode:
authorDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
committerDenys Dmytriyenko <denis@denix.org>2009-03-17 14:32:59 -0400
commit709c4d66e0b107ca606941b988bad717c0b45d9b (patch)
tree37ee08b1eb308f3b2b6426d5793545c38396b838 /recipes/linux/linux-geodegx-2.4.24
parentfa6cd5a3b993f16c27de4ff82b42684516d433ba (diff)
rename packages/ to recipes/ per earlier agreement
See links below for more details: http://thread.gmane.org/gmane.comp.handhelds.openembedded/21326 http://thread.gmane.org/gmane.comp.handhelds.openembedded/21816 Signed-off-by: Denys Dmytriyenko <denis@denix.org> Acked-by: Mike Westerhof <mwester@dls.net> Acked-by: Philip Balister <philip@balister.org> Acked-by: Khem Raj <raj.khem@gmail.com> Acked-by: Marcin Juszkiewicz <hrw@openembedded.org> Acked-by: Koen Kooi <koen@openembedded.org> Acked-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
Diffstat (limited to 'recipes/linux/linux-geodegx-2.4.24')
-rw-r--r--recipes/linux/linux-geodegx-2.4.24/defconfig1027
-rw-r--r--recipes/linux/linux-geodegx-2.4.24/linux-2.4.24-gcc340-fixes.patch1588
2 files changed, 2615 insertions, 0 deletions
diff --git a/recipes/linux/linux-geodegx-2.4.24/defconfig b/recipes/linux/linux-geodegx-2.4.24/defconfig
new file mode 100644
index 0000000000..6ad41f4679
--- /dev/null
+++ b/recipes/linux/linux-geodegx-2.4.24/defconfig
@@ -0,0 +1,1027 @@
+#
+# Automatically generated make config: don't edit
+#
+CONFIG_X86=y
+# CONFIG_SBUS is not set
+CONFIG_UID16=y
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+
+#
+# Processor type and features
+#
+# CONFIG_M386 is not set
+# CONFIG_M486 is not set
+# CONFIG_M586 is not set
+# CONFIG_M586TSC is not set
+# CONFIG_M586MMX is not set
+# CONFIG_M686 is not set
+# CONFIG_MPENTIUMIII is not set
+# CONFIG_MPENTIUM4 is not set
+# CONFIG_MK6 is not set
+# CONFIG_MK7 is not set
+# CONFIG_MK8 is not set
+# CONFIG_MELAN is not set
+# CONFIG_MCRUSOE is not set
+# CONFIG_MWINCHIPC6 is not set
+# CONFIG_MWINCHIP2 is not set
+# CONFIG_MWINCHIP3D is not set
+# CONFIG_GEODE_SC1200 is not set
+CONFIG_GEODE_GX2=y
+# CONFIG_MCYRIXIII is not set
+# CONFIG_MVIAC3_2 is not set
+CONFIG_X86_WP_WORKS_OK=y
+CONFIG_X86_INVLPG=y
+CONFIG_X86_CMPXCHG=y
+CONFIG_X86_XADD=y
+CONFIG_X86_BSWAP=y
+CONFIG_X86_POPAD_OK=y
+# CONFIG_RWSEM_GENERIC_SPINLOCK is not set
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_X86_L1_CACHE_SHIFT=5
+CONFIG_X86_HAS_TSC=y
+# CONFIG_MTRR is not set
+# CONFIG_X86_LOCAL_APIC is not set
+# CONFIG_X86_GOOD_APIC is not set
+CONFIG_X86_PGE=y
+CONFIG_X86_USE_PPRO_CHECKSUM=y
+CONFIG_X86_F00F_WORKS_OK=y
+# CONFIG_X86_MCE is not set
+# CONFIG_TOSHIBA is not set
+# CONFIG_I8K is not set
+# CONFIG_MICROCODE is not set
+CONFIG_X86_MSR=y
+CONFIG_X86_CPUID=y
+# CONFIG_EDD is not set
+# CONFIG_NOHIGHMEM is not set
+CONFIG_HIGHMEM4G=y
+CONFIG_HIGHMEM=y
+CONFIG_HIGHIO=y
+# CONFIG_MATH_EMULATION is not set
+# CONFIG_SMP is not set
+# CONFIG_X86_TSC_DISABLE is not set
+CONFIG_X86_TSC=y
+
+#
+# General setup
+#
+CONFIG_NET=y
+CONFIG_PCI=y
+# CONFIG_PCI_GOBIOS is not set
+# CONFIG_PCI_GODIRECT is not set
+CONFIG_PCI_GOANY=y
+CONFIG_PCI_BIOS=y
+CONFIG_PCI_DIRECT=y
+# CONFIG_ISA is not set
+# CONFIG_PCI_NAMES is not set
+# CONFIG_EISA is not set
+# CONFIG_MCA is not set
+CONFIG_HOTPLUG=y
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+
+#
+# PCI Hotplug Support
+#
+# CONFIG_HOTPLUG_PCI is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ is not set
+# CONFIG_HOTPLUG_PCI_COMPAQ_NVRAM is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_SYSCTL=y
+CONFIG_KCORE_ELF=y
+# CONFIG_KCORE_AOUT is not set
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_MISC is not set
+CONFIG_PM=y
+CONFIG_APM=y
+# CONFIG_APM_IGNORE_USER_SUSPEND is not set
+# CONFIG_APM_DO_ENABLE is not set
+# CONFIG_APM_CPU_IDLE is not set
+# CONFIG_APM_DISPLAY_BLANK is not set
+# CONFIG_APM_RTC_IS_GMT is not set
+# CONFIG_APM_ALLOW_INTS is not set
+# CONFIG_APM_REAL_MODE_POWER_OFF is not set
+
+#
+# ACPI Support
+#
+# CONFIG_ACPI is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+# CONFIG_MTD is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_CISS_SCSI_TAPE is not set
+# CONFIG_CISS_MONITOR_THREAD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_LOOP is not set
+CONFIG_BLK_DEV_NBD=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=16384
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_STATS is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_MD_LINEAR is not set
+# CONFIG_MD_RAID0 is not set
+# CONFIG_MD_RAID1 is not set
+# CONFIG_MD_RAID5 is not set
+# CONFIG_MD_MULTIPATH is not set
+# CONFIG_BLK_DEV_LVM is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_INET_ECN is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+CONFIG_IPV6_SCTP__=y
+# CONFIG_IP_SCTP is not set
+# CONFIG_ATM is not set
+# CONFIG_VLAN_8021Q is not set
+
+#
+#
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_DEV_APPLETALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_LLC is not set
+# CONFIG_NET_DIVERT is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+
+#
+# Telephony Support
+#
+# CONFIG_PHONE is not set
+# CONFIG_PHONE_IXJ is not set
+# CONFIG_PHONE_IXJ_PCMCIA is not set
+
+#
+# ATA/IDE/MFM/RLL support
+#
+CONFIG_IDE=y
+
+#
+# IDE, ATA and ATAPI Block devices
+#
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_IDEDISK_MULTI_MODE=y
+# CONFIG_IDEDISK_STROKE is not set
+# CONFIG_BLK_DEV_IDECS is not set
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_IDE_TASK_IOCTL is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_CMD640_ENHANCED is not set
+# CONFIG_BLK_DEV_ISAPNP is not set
+CONFIG_BLK_DEV_IDEPCI=y
+# CONFIG_BLK_DEV_GENERIC is not set
+CONFIG_IDEPCI_SHARE_IRQ=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
+# CONFIG_IDEDMA_PCI_AUTO is not set
+# CONFIG_IDEDMA_ONLYDISK is not set
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_IDEDMA_PCI_WIP is not set
+# CONFIG_BLK_DEV_ADMA100 is not set
+# CONFIG_BLK_DEV_AEC62XX is not set
+# CONFIG_BLK_DEV_ALI15X3 is not set
+# CONFIG_WDC_ALI15X3 is not set
+# CONFIG_BLK_DEV_AMD74XX is not set
+# CONFIG_AMD74XX_OVERRIDE is not set
+# CONFIG_BLK_DEV_CMD64X is not set
+# CONFIG_BLK_DEV_TRIFLEX is not set
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_CS5530 is not set
+CONFIG_BLK_DEV_CS5535=y
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_HPT34X_AUTODMA is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_PIIX is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_PDC202XX_OLD is not set
+# CONFIG_PDC202XX_BURST is not set
+# CONFIG_BLK_DEV_PDC202XX_NEW is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_SC1200 is not set
+# CONFIG_BLK_DEV_SVWKS is not set
+# CONFIG_BLK_DEV_SIIMAGE is not set
+# CONFIG_BLK_DEV_SIS5513 is not set
+# CONFIG_BLK_DEV_SLC90E66 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_IDEDMA_AUTO is not set
+# CONFIG_IDEDMA_IVB is not set
+# CONFIG_DMA_NONPCI is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_ATARAID is not set
+# CONFIG_BLK_DEV_ATARAID_PDC is not set
+# CONFIG_BLK_DEV_ATARAID_HPT is not set
+# CONFIG_BLK_DEV_ATARAID_SII is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_SD_EXTRA_DEVS=40
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_DEBUG_QUEUES is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AACRAID is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_AIC79XX is not set
+# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_SCSI_DPT_I2O is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_MEGARAID is not set
+# CONFIG_SCSI_MEGARAID2 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_CPQFCTS is not set
+# CONFIG_SCSI_DMX3191D is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_FUTURE_DOMAIN is not set
+# CONFIG_SCSI_GDTH is not set
+# CONFIG_SCSI_GENERIC_NCR5380 is not set
+# CONFIG_SCSI_IPS is not set
+# CONFIG_SCSI_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_SYM53C8XX_2 is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+# CONFIG_SCSI_SYM53C8XX is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_QLOGIC_1280 is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_NSP32 is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+# CONFIG_FUSION_BOOT is not set
+# CONFIG_FUSION_ISENSE is not set
+# CONFIG_FUSION_CTL is not set
+# CONFIG_FUSION_LAN is not set
+
+#
+# IEEE 1394 (FireWire) support (EXPERIMENTAL)
+#
+# CONFIG_IEEE1394 is not set
+
+#
+# I2O device support
+#
+# CONFIG_I2O is not set
+# CONFIG_I2O_PCI is not set
+# CONFIG_I2O_BLOCK is not set
+# CONFIG_I2O_LAN is not set
+# CONFIG_I2O_SCSI is not set
+# CONFIG_I2O_PROC is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_ETHERTAP is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNGEM is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_HP100 is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_PCI=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AMD8111_ETH is not set
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_APRICOT is not set
+# CONFIG_B44 is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_TULIP is not set
+# CONFIG_DE4X5 is not set
+# CONFIG_DGRS is not set
+# CONFIG_DM9102 is not set
+# CONFIG_EEPRO100 is not set
+# CONFIG_EEPRO100_PIO is not set
+# CONFIG_E100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
+CONFIG_NATSEMI=y
+# CONFIG_NE2K_PCI is not set
+# CONFIG_NE3210 is not set
+# CONFIG_ES3210 is not set
+# CONFIG_8139CP is not set
+CONFIG_8139TOO=y
+# CONFIG_8139TOO_PIO is not set
+# CONFIG_8139TOO_TUNE_TWISTER is not set
+# CONFIG_8139TOO_8129 is not set
+# CONFIG_8139_OLD_RX_RESET is not set
+# CONFIG_SIS900 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_SUNDANCE is not set
+# CONFIG_SUNDANCE_MMIO is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_VIA_RHINE_MMIO is not set
+# CONFIG_WINBOND_840 is not set
+# CONFIG_NET_POCKET is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_MYRI_SBUS is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SK98LIN is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring devices
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# IrDA (infrared) support
+#
+# CONFIG_IRDA is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input core support
+#
+CONFIG_INPUT=y
+CONFIG_INPUT_KEYBDEV=y
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_EVDEV is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+# CONFIG_SERIAL is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_GAMEPORT is not set
+# CONFIG_INPUT_NS558 is not set
+# CONFIG_INPUT_LIGHTNING is not set
+# CONFIG_INPUT_PCIGAME is not set
+# CONFIG_INPUT_CS461X is not set
+# CONFIG_INPUT_EMU10K1 is not set
+# CONFIG_INPUT_SERIO is not set
+# CONFIG_INPUT_SERPORT is not set
+
+#
+# Joysticks
+#
+# CONFIG_INPUT_ANALOG is not set
+# CONFIG_INPUT_A3D is not set
+# CONFIG_INPUT_ADI is not set
+# CONFIG_INPUT_COBRA is not set
+# CONFIG_INPUT_GF2K is not set
+# CONFIG_INPUT_GRIP is not set
+# CONFIG_INPUT_INTERACT is not set
+# CONFIG_INPUT_TMDC is not set
+# CONFIG_INPUT_SIDEWINDER is not set
+# CONFIG_INPUT_IFORCE_USB is not set
+# CONFIG_INPUT_IFORCE_232 is not set
+# CONFIG_INPUT_WARRIOR is not set
+# CONFIG_INPUT_MAGELLAN is not set
+# CONFIG_INPUT_SPACEORB is not set
+# CONFIG_INPUT_SPACEBALL is not set
+# CONFIG_INPUT_STINGER is not set
+# CONFIG_INPUT_DB9 is not set
+# CONFIG_INPUT_GAMECON is not set
+# CONFIG_INPUT_TURBOGRAFX is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_IPMI_PANIC_EVENT is not set
+# CONFIG_IPMI_DEVICE_INTERFACE is not set
+# CONFIG_IPMI_KCS is not set
+# CONFIG_IPMI_WATCHDOG is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_SCx200_GPIO is not set
+# CONFIG_AMD_RNG is not set
+# CONFIG_INTEL_RNG is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_AMD_PM768 is not set
+# CONFIG_NVRAM is not set
+CONFIG_RTC=y
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_AGP is not set
+
+#
+# Direct Rendering Manager (XFree86 DRI support)
+#
+# CONFIG_DRM is not set
+# CONFIG_MWAVE is not set
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# File systems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_QFMT_V2 is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_REISERFS_CHECK is not set
+# CONFIG_REISERFS_PROC_INFO is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_ADFS_FS_RW is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BEFS_DEBUG is not set
+# CONFIG_BFS_FS is not set
+CONFIG_EXT3_FS=m
+CONFIG_JBD=m
+# CONFIG_JBD_DEBUG is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=m
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_CRAMFS=y
+CONFIG_TMPFS=y
+CONFIG_RAMFS=y
+CONFIG_ISO9660_FS=m
+# CONFIG_JOLIET is not set
+# CONFIG_ZISOFS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_JFS_DEBUG is not set
+# CONFIG_JFS_STATISTICS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_NTFS_RW is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVFS_FS=y
+CONFIG_DEVFS_MOUNT=y
+# CONFIG_DEVFS_DEBUG is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX4FS_RW is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=m
+# CONFIG_SYSV_FS is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_UDF_RW is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_UFS_FS_WRITE is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_INTERMEZZO_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFSD is not set
+# CONFIG_NFSD_V3 is not set
+# CONFIG_NFSD_TCP is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_SMB_FS=m
+# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_NCPFS_PACKET_SIGNING is not set
+# CONFIG_NCPFS_IOCTL_LOCKING is not set
+# CONFIG_NCPFS_STRONG is not set
+# CONFIG_NCPFS_NFS_NS is not set
+# CONFIG_NCPFS_OS2_NS is not set
+# CONFIG_NCPFS_SMALLDOS is not set
+# CONFIG_NCPFS_NLS is not set
+# CONFIG_NCPFS_EXTRAS is not set
+# CONFIG_ZISOFS_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_SMB_NLS=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_DEFAULT="iso8859-1"
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+
+#
+# Console drivers
+#
+CONFIG_VGA_CONSOLE=y
+CONFIG_VIDEO_SELECT=y
+# CONFIG_MDA_CONSOLE is not set
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_CLGEN is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_VESA=y
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_HGA is not set
+CONFIG_VIDEO_SELECT=y
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_INTEL is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FBCON_ADVANCED=y
+# CONFIG_FBCON_MFB is not set
+# CONFIG_FBCON_CFB2 is not set
+# CONFIG_FBCON_CFB4 is not set
+# CONFIG_FBCON_CFB8 is not set
+CONFIG_FBCON_CFB16=y
+# CONFIG_FBCON_CFB24 is not set
+# CONFIG_FBCON_CFB32 is not set
+# CONFIG_FBCON_AFB is not set
+# CONFIG_FBCON_ILBM is not set
+# CONFIG_FBCON_IPLAN2P2 is not set
+# CONFIG_FBCON_IPLAN2P4 is not set
+# CONFIG_FBCON_IPLAN2P8 is not set
+# CONFIG_FBCON_MAC is not set
+# CONFIG_FBCON_VGA_PLANES is not set
+# CONFIG_FBCON_VGA is not set
+# CONFIG_FBCON_HGA is not set
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+# CONFIG_SOUND_ALI5455 is not set
+# CONFIG_SOUND_BT878 is not set
+# CONFIG_SOUND_CMPCI is not set
+# CONFIG_SOUND_EMU10K1 is not set
+# CONFIG_MIDI_EMU10K1 is not set
+# CONFIG_SOUND_FUSION is not set
+# CONFIG_SOUND_CS4281 is not set
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_ESSSOLO1 is not set
+# CONFIG_SOUND_MAESTRO is not set
+# CONFIG_SOUND_MAESTRO3 is not set
+# CONFIG_SOUND_FORTE is not set
+# CONFIG_SOUND_ICH is not set
+# CONFIG_SOUND_RME96XX is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_TRIDENT is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
+CONFIG_SOUND_OSS=y
+# CONFIG_SOUND_TRACEINIT is not set
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_AD1816 is not set
+# CONFIG_SOUND_AD1889 is not set
+# CONFIG_SOUND_SGALAXY is not set
+# CONFIG_SOUND_ADLIB is not set
+# CONFIG_SOUND_ACI_MIXER is not set
+# CONFIG_SOUND_CS4232 is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_GUS is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_NM256 is not set
+# CONFIG_SOUND_MAD16 is not set
+# CONFIG_SOUND_PAS is not set
+# CONFIG_PAS_JOYSTICK is not set
+# CONFIG_SOUND_PSS is not set
+# CONFIG_SOUND_SB is not set
+# CONFIG_SOUND_AWE32_SYNTH is not set
+# CONFIG_SOUND_KAHLUA is not set
+# CONFIG_SOUND_WAVEFRONT is not set
+# CONFIG_SOUND_MAUI is not set
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_OPL3SA1 is not set
+# CONFIG_SOUND_OPL3SA2 is not set
+# CONFIG_SOUND_YMFPCI is not set
+# CONFIG_SOUND_YMFPCI_LEGACY is not set
+# CONFIG_SOUND_UART6850 is not set
+# CONFIG_SOUND_AEDSP16 is not set
+# CONFIG_SOUND_TVMIXER is not set
+# CONFIG_SOUND_AD1980 is not set
+# CONFIG_SOUND_WM97XX is not set
+
+#
+# USB support
+#
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_EHCI_HCD is not set
+# CONFIG_USB_UHCI is not set
+# CONFIG_USB_UHCI_ALT is not set
+CONFIG_USB_OHCI=y
+# CONFIG_USB_SL811HS_ALT is not set
+# CONFIG_USB_SL811HS is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_BLUETOOTH is not set
+# CONFIG_USB_MIDI is not set
+CONFIG_USB_STORAGE=m
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_HP8200e is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# USB Human Interface Devices (HID)
+#
+CONFIG_USB_HID=y
+CONFIG_USB_HIDINPUT=y
+# CONFIG_USB_HIDDEV is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_DC2XX is not set
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_SCANNER is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_HPUSBSCSI is not set
+
+#
+# USB Multimedia devices
+#
+
+#
+# Video4Linux support is needed for USB Multimedia device support
+#
+
+#
+# USB Network adaptors
+#
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_AX8817X is not set
+# CONFIG_USB_CDCETHER is not set
+# CONFIG_USB_USBNET is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_USS720 is not set
+
+#
+# USB Serial Converter support
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_AUERSWALD is not set
+# CONFIG_USB_TIGL is not set
+# CONFIG_USB_BRLVGER is not set
+# CONFIG_USB_LCD is not set
+
+#
+# Support for USB gadgets
+#
+# CONFIG_USB_GADGET is not set
+
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_DEBUG_KERNEL is not set
+CONFIG_LOG_BUF_SHIFT=0
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_CRC32=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+# CONFIG_FW_LOADER is not set
diff --git a/recipes/linux/linux-geodegx-2.4.24/linux-2.4.24-gcc340-fixes.patch b/recipes/linux/linux-geodegx-2.4.24/linux-2.4.24-gcc340-fixes.patch
new file mode 100644
index 0000000000..ddcfda9bbe
--- /dev/null
+++ b/recipes/linux/linux-geodegx-2.4.24/linux-2.4.24-gcc340-fixes.patch
@@ -0,0 +1,1588 @@
+diff -urN linux-2.4.24/arch/i386/Makefile linux-2.4.24-new/arch/i386/Makefile
+--- linux-2.4.24/arch/i386/Makefile 2003-06-13 07:51:29.000000000 -0700
++++ linux-2.4.24-new/arch/i386/Makefile 2004-05-04 12:20:40.583841872 -0700
+@@ -94,6 +94,8 @@
+ CFLAGS += $(call check_gcc,-march=c3-2,-march=i686)
+ endif
+
++CFLAGS += $(call check_gcc,-fno-unit-at-a-time,)
++
+ HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
+
+ SUBDIRS += arch/i386/kernel arch/i386/mm arch/i386/lib
+diff -urN linux-2.4.24/arch/i386/boot/compressed/misc.c linux-2.4.24-new/arch/i386/boot/compressed/misc.c
+--- linux-2.4.24/arch/i386/boot/compressed/misc.c 2003-08-25 04:44:39.000000000 -0700
++++ linux-2.4.24-new/arch/i386/boot/compressed/misc.c 2004-05-04 12:20:40.583841872 -0700
+@@ -104,7 +104,7 @@
+ static void *malloc(int size);
+ static void free(void *where);
+
+-static void puts(const char *);
++static void putstr(const char *);
+
+ extern int end;
+ static long free_mem_ptr = (long)&end;
+@@ -165,7 +165,7 @@
+ vidmem[i] = ' ';
+ }
+
+-static void puts(const char *s)
++static void putstr(const char *s)
+ {
+ int x,y,pos;
+ char c;
+@@ -283,9 +283,9 @@
+
+ static void error(char *x)
+ {
+- puts("\n\n");
+- puts(x);
+- puts("\n\n -- System halted");
++ putstr("\n\n");
++ putstr(x);
++ putstr("\n\n -- System halted");
+
+ while(1); /* Halt */
+ }
+@@ -369,9 +369,9 @@
+ else setup_output_buffer_if_we_run_high(mv);
+
+ makecrc();
+- puts("Uncompressing Linux... ");
++ putstr("Uncompressing Linux... ");
+ gunzip();
+- puts("Ok, booting the kernel.\n");
++ putstr("Ok, booting the kernel.\n");
+ if (high_loaded) close_output_buffer_if_we_run_high(mv);
+ return high_loaded;
+ }
+diff -urN linux-2.4.24/arch/i386/kernel/io_apic.c linux-2.4.24-new/arch/i386/kernel/io_apic.c
+--- linux-2.4.24/arch/i386/kernel/io_apic.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/io_apic.c 2004-05-04 12:20:40.584841720 -0700
+@@ -1349,7 +1349,7 @@
+
+ #ifndef CONFIG_SMP
+
+-void send_IPI_self(int vector)
++void fastcall send_IPI_self(int vector)
+ {
+ unsigned int cfg;
+
+diff -urN linux-2.4.24/arch/i386/kernel/pci-pc.c linux-2.4.24-new/arch/i386/kernel/pci-pc.c
+--- linux-2.4.24/arch/i386/kernel/pci-pc.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/pci-pc.c 2004-05-04 12:20:40.585841568 -0700
+@@ -1017,11 +1017,13 @@
+ "1:"
+ : "=a" (ret),
+ "=b" (map),
+- "+m" (opt)
++ "=m" (opt)
+ : "0" (PCIBIOS_GET_ROUTING_OPTIONS),
+ "1" (0),
+ "D" ((long) &opt),
+- "S" (&pci_indirect));
++ "S" (&pci_indirect),
++ "m" (opt)
++ : "memory");
+ DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
+ if (ret & 0xff00)
+ printk(KERN_ERR "PCI: Error %02x when fetching IRQ routing table.\n", (ret >> 8) & 0xff);
+diff -urN linux-2.4.24/arch/i386/kernel/process.c linux-2.4.24-new/arch/i386/kernel/process.c
+--- linux-2.4.24/arch/i386/kernel/process.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/process.c 2004-05-04 12:20:40.585841568 -0700
+@@ -687,7 +687,7 @@
+ * More important, however, is the fact that this allows us much
+ * more flexibility.
+ */
+-void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
++void fastcall __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
+ {
+ struct thread_struct *prev = &prev_p->thread,
+ *next = &next_p->thread;
+diff -urN linux-2.4.24/arch/i386/kernel/signal.c linux-2.4.24-new/arch/i386/kernel/signal.c
+--- linux-2.4.24/arch/i386/kernel/signal.c 2002-08-02 17:39:42.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/signal.c 2004-05-04 12:20:40.585841568 -0700
+@@ -581,7 +581,7 @@
+ * want to handle. Thus you cannot kill init even with a SIGKILL even by
+ * mistake.
+ */
+-int do_signal(struct pt_regs *regs, sigset_t *oldset)
++int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset)
+ {
+ siginfo_t info;
+ struct k_sigaction *ka;
+diff -urN linux-2.4.24/arch/i386/kernel/smp.c linux-2.4.24-new/arch/i386/kernel/smp.c
+--- linux-2.4.24/arch/i386/kernel/smp.c 2003-06-13 07:51:29.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/smp.c 2004-05-04 12:20:40.586841416 -0700
+@@ -150,7 +150,7 @@
+ apic_write_around(APIC_ICR, cfg);
+ }
+
+-void send_IPI_self(int vector)
++void fastcall send_IPI_self(int vector)
+ {
+ __send_IPI_shortcut(APIC_DEST_SELF, vector);
+ }
+diff -urN linux-2.4.24/arch/i386/kernel/vm86.c linux-2.4.24-new/arch/i386/kernel/vm86.c
+--- linux-2.4.24/arch/i386/kernel/vm86.c 2003-08-25 04:44:39.000000000 -0700
++++ linux-2.4.24-new/arch/i386/kernel/vm86.c 2004-05-04 12:20:40.586841416 -0700
+@@ -91,7 +91,7 @@
+ #define VM86_REGS_SIZE2 (sizeof(struct kernel_vm86_regs) - VM86_REGS_SIZE1)
+
+ struct pt_regs * FASTCALL(save_v86_state(struct kernel_vm86_regs * regs));
+-struct pt_regs * save_v86_state(struct kernel_vm86_regs * regs)
++struct pt_regs * fastcall save_v86_state(struct kernel_vm86_regs * regs)
+ {
+ struct tss_struct *tss;
+ struct pt_regs *ret;
+diff -urN linux-2.4.24/arch/ppc/kernel/ppc_htab.c linux-2.4.24-new/arch/ppc/kernel/ppc_htab.c
+--- linux-2.4.24/arch/ppc/kernel/ppc_htab.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/ppc/kernel/ppc_htab.c 2004-05-04 12:20:40.586841416 -0700
+@@ -488,7 +488,7 @@
+ if (!isspace(c))
+ break;
+ left--;
+- ((char *) buffer)++;
++ buffer++;
+ }
+ if (!left)
+ break;
+diff -urN linux-2.4.24/arch/x86_64/boot/compressed/misc.c linux-2.4.24-new/arch/x86_64/boot/compressed/misc.c
+--- linux-2.4.24/arch/x86_64/boot/compressed/misc.c 2003-06-13 07:51:32.000000000 -0700
++++ linux-2.4.24-new/arch/x86_64/boot/compressed/misc.c 2004-05-04 12:20:40.587841264 -0700
+@@ -96,7 +96,7 @@
+ static void gzip_mark(void **);
+ static void gzip_release(void **);
+
+-static void puts(const char *);
++static void putstr(const char *);
+
+ extern int end;
+ static long free_mem_ptr = (long)&end;
+@@ -157,7 +157,7 @@
+ vidmem[i] = ' ';
+ }
+
+-static void puts(const char *s)
++static void putstr(const char *s)
+ {
+ int x,y,pos;
+ char c;
+@@ -275,9 +275,9 @@
+
+ static void error(char *x)
+ {
+- puts("\n\n");
+- puts(x);
+- puts("\n\n -- System halted");
++ putstr("\n\n");
++ putstr(x);
++ putstr("\n\n -- System halted");
+
+ while(1);
+ }
+@@ -351,9 +351,9 @@
+ else setup_output_buffer_if_we_run_high(mv);
+
+ makecrc();
+- puts(".\nDecompressing Linux...");
++ putstr(".\nDecompressing Linux...");
+ gunzip();
+- puts("done.\nBooting the kernel.\n");
++ putstr("done.\nBooting the kernel.\n");
+ if (high_loaded) close_output_buffer_if_we_run_high(mv);
+ return high_loaded;
+ }
+diff -urN linux-2.4.24/arch/x86_64/ia32/ia32_ioctl.c linux-2.4.24-new/arch/x86_64/ia32/ia32_ioctl.c
+--- linux-2.4.24/arch/x86_64/ia32/ia32_ioctl.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/x86_64/ia32/ia32_ioctl.c 2004-05-04 12:20:40.589840960 -0700
+@@ -1164,6 +1164,7 @@
+ case FDDEFPRM32:
+ case FDGETPRM32:
+ {
++ u32 name;
+ struct floppy_struct *f;
+
+ f = karg = kmalloc(sizeof(struct floppy_struct), GFP_KERNEL);
+@@ -1180,7 +1181,8 @@
+ err |= __get_user(f->rate, &((struct floppy_struct32 *)arg)->rate);
+ err |= __get_user(f->spec1, &((struct floppy_struct32 *)arg)->spec1);
+ err |= __get_user(f->fmt_gap, &((struct floppy_struct32 *)arg)->fmt_gap);
+- err |= __get_user((u64)f->name, &((struct floppy_struct32 *)arg)->name);
++ err |= __get_user(name, &((struct floppy_struct32 *)arg)->name);
++ f->name = (void*)(u64)name;
+ if (err) {
+ err = -EFAULT;
+ goto out;
+@@ -2708,20 +2710,23 @@
+ {
+ struct blkpg_ioctl_arg a;
+ struct blkpg_partition p;
++ struct blkpg_partition *up32;
++ u32 udata;
+ int err;
+ mm_segment_t old_fs = get_fs();
+
+ err = get_user(a.op, &arg->op);
+ err |= __get_user(a.flags, &arg->flags);
+ err |= __get_user(a.datalen, &arg->datalen);
+- err |= __get_user((long)a.data, &arg->data);
++ err |= __get_user(udata, &arg->data);
++ up32 = (void*)(u64)udata;
+ if (err) return err;
+ switch (a.op) {
+ case BLKPG_ADD_PARTITION:
+ case BLKPG_DEL_PARTITION:
+ if (a.datalen < sizeof(struct blkpg_partition))
+ return -EINVAL;
+- if (copy_from_user(&p, a.data, sizeof(struct blkpg_partition)))
++ if (copy_from_user(&p, up32, sizeof(struct blkpg_partition)))
+ return -EFAULT;
+ a.data = &p;
+ set_fs (KERNEL_DS);
+diff -urN linux-2.4.24/arch/x86_64/ia32/sys_ia32.c linux-2.4.24-new/arch/x86_64/ia32/sys_ia32.c
+--- linux-2.4.24/arch/x86_64/ia32/sys_ia32.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/x86_64/ia32/sys_ia32.c 2004-05-04 12:20:40.590840808 -0700
+@@ -381,12 +381,16 @@
+ return -EINVAL;
+
+ if (act) {
++ u32 handler, restorer;
++
+ if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
+- __get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
++ __get_user(handler, &act->sa_handler) ||
+ __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
+- __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer)||
++ __get_user(restorer, &act->sa_restorer)||
+ __copy_from_user(&set32, &act->sa_mask, sizeof(sigset32_t)))
+ return -EFAULT;
++ new_ka.sa.sa_handler = (void*)(u64)handler;
++ new_ka.sa.sa_restorer = (void*)(u64)restorer;
+
+ /* FIXME: here we rely on _IA32_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
+ switch (_NSIG_WORDS) {
+@@ -438,13 +442,16 @@
+
+ if (act) {
+ old_sigset32_t mask;
++ u32 handler, restorer;
+
+ if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
+- __get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
++ __get_user(handler, &act->sa_handler) ||
+ __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
+- __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer) ||
++ __get_user(restorer, &act->sa_restorer) ||
+ __get_user(mask, &act->sa_mask))
+ return -EFAULT;
++ new_ka.sa.sa_handler = (void*)(u64)handler;
++ new_ka.sa.sa_restorer = (void*)(u64)restorer;
+ siginitset(&new_ka.sa.sa_mask, mask);
+ }
+
+@@ -775,7 +782,7 @@
+ put_user(reclen, &dirent->d_reclen);
+ copy_to_user(dirent->d_name, name, namlen);
+ put_user(0, dirent->d_name + namlen);
+- ((char *) dirent) += reclen;
++ dirent = (void*)dirent + reclen;
+ buf->current_dir = dirent;
+ buf->count -= reclen;
+ return 0;
+diff -urN linux-2.4.24/arch/x86_64/kernel/x8664_ksyms.c linux-2.4.24-new/arch/x86_64/kernel/x8664_ksyms.c
+--- linux-2.4.24/arch/x86_64/kernel/x8664_ksyms.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/x86_64/kernel/x8664_ksyms.c 2004-05-04 12:20:40.591840656 -0700
+@@ -155,7 +155,7 @@
+ extern __kernel_size_t strlen(const char *);
+ extern int strcmp(const char *,const char *);
+ extern char * strcpy(char *,const char *);
+-extern char * bcopy(const char * src, char * dest, int count);
++extern void bcopy(const void * src, void * dest, size_t count);
+
+ EXPORT_SYMBOL_NOVERS(memcpy);
+ EXPORT_SYMBOL_NOVERS(__memcpy);
+diff -urN linux-2.4.24/arch/x86_64/lib/usercopy.c linux-2.4.24-new/arch/x86_64/lib/usercopy.c
+--- linux-2.4.24/arch/x86_64/lib/usercopy.c 2003-11-28 11:26:19.000000000 -0700
++++ linux-2.4.24-new/arch/x86_64/lib/usercopy.c 2004-05-04 12:20:40.591840656 -0700
+@@ -88,7 +88,7 @@
+ " .quad 1b,2b\n"
+ ".previous"
+ : [size8] "=c"(size), [dst] "=&D" (__d0)
+- : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst] "(addr),
++ : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
+ [zero] "r" (0UL), [eight] "r" (8UL));
+ return size;
+ }
+diff -urN linux-2.4.24/drivers/char/drm/drm_dma.h linux-2.4.24-new/drivers/char/drm/drm_dma.h
+--- linux-2.4.24/drivers/char/drm/drm_dma.h 2003-11-28 11:26:20.000000000 -0700
++++ linux-2.4.24-new/drivers/char/drm/drm_dma.h 2004-05-04 12:20:40.592840504 -0700
+@@ -648,7 +648,7 @@
+ * for the same vblank sequence number; nothing to be done in
+ * that case
+ */
+- list_for_each( ( (struct list_head *) vbl_sig ), &dev->vbl_sigs.head ) {
++ list_for_each_entry( vbl_sig, &dev->vbl_sigs.head, head ) {
+ if (vbl_sig->sequence == vblwait.request.sequence
+ && vbl_sig->info.si_signo == vblwait.request.signal
+ && vbl_sig->task == current)
+@@ -699,19 +699,20 @@
+
+ void DRM(vbl_send_signals)( drm_device_t *dev )
+ {
+- struct list_head *tmp;
++ struct list_head *list, *tmp;
+ drm_vbl_sig_t *vbl_sig;
+ unsigned int vbl_seq = atomic_read( &dev->vbl_received );
+ unsigned long flags;
+
+ spin_lock_irqsave( &dev->vbl_lock, flags );
+
+- list_for_each_safe( ( (struct list_head *) vbl_sig ), tmp, &dev->vbl_sigs.head ) {
++ list_for_each_safe( list, tmp, &dev->vbl_sigs.head ) {
++ vbl_sig = list_entry( list, drm_vbl_sig_t, head );
+ if ( ( vbl_seq - vbl_sig->sequence ) <= (1<<23) ) {
+ vbl_sig->info.si_code = vbl_seq;
+ send_sig_info( vbl_sig->info.si_signo, &vbl_sig->info, vbl_sig->task );
+
+- list_del( (struct list_head *) vbl_sig );
++ list_del( list );
+
+
+ kfree( vbl_sig );
+diff -urN linux-2.4.24/drivers/char/drm/radeon_state.c linux-2.4.24-new/drivers/char/drm/radeon_state.c
+--- linux-2.4.24/drivers/char/drm/radeon_state.c 2003-11-28 11:26:20.000000000 -0700
++++ linux-2.4.24-new/drivers/char/drm/radeon_state.c 2004-05-04 12:20:40.593840352 -0700
+@@ -1223,7 +1223,7 @@
+ /* Update the input parameters for next time */
+ image->y += height;
+ image->height -= height;
+- (const u8 *)image->data += size;
++ image->data = (const u8 *)image->data + size;
+ } while (image->height > 0);
+
+ /* Flush the pixel cache after the blit completes. This ensures
+diff -urN linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.c linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.c
+--- linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.c 2000-10-16 12:58:51.000000000 -0700
++++ linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.c 2004-05-04 12:20:40.593840352 -0700
+@@ -203,6 +203,7 @@
+ ft_format_code == fmt_1100ft) {
+ SectorCount *ptr = (SectorCount *)bad_sector_map;
+ unsigned int sector;
++ __u16 *ptr16;
+
+ while((sector = get_sector(ptr++)) != 0) {
+ if ((ft_format_code == fmt_big ||
+@@ -218,9 +219,10 @@
+ }
+ /* Display old ftape's end-of-file marks
+ */
+- while ((sector = get_unaligned(((__u16*)ptr)++)) != 0) {
++ ptr16 = (__u16*)ptr;
++ while ((sector = get_unaligned(ptr16++)) != 0) {
+ TRACE(ft_t_noise, "Old ftape eof mark: %4d/%2d",
+- sector, get_unaligned(((__u16*)ptr)++));
++ sector, get_unaligned(ptr16++));
+ }
+ } else { /* fixed size format */
+ for (i = ft_first_data_segment;
+diff -urN linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.h linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.h
+--- linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.h 1997-11-25 15:45:27.000000000 -0700
++++ linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.h 2004-05-04 12:20:40.593840352 -0700
+@@ -47,7 +47,7 @@
+ */
+ typedef struct NewSectorMap {
+ __u8 bytes[3];
+-} SectorCount __attribute__((packed));
++} SectorCount;
+
+
+ /*
+diff -urN linux-2.4.24/drivers/char/ftape/zftape/zftape-eof.c linux-2.4.24-new/drivers/char/ftape/zftape/zftape-eof.c
+--- linux-2.4.24/drivers/char/ftape/zftape/zftape-eof.c 1999-11-23 11:29:15.000000000 -0700
++++ linux-2.4.24-new/drivers/char/ftape/zftape/zftape-eof.c 2004-05-04 12:20:40.593840352 -0700
+@@ -123,7 +123,7 @@
+ while (ptr + 3 < limit) {
+
+ if (get_unaligned((__u32*)ptr)) {
+- ++(__u32*)ptr;
++ ptr += sizeof(__u32);
+ } else {
+ return ptr;
+ }
+diff -urN linux-2.4.24/drivers/parport/parport_pc.c linux-2.4.24-new/drivers/parport/parport_pc.c
+--- linux-2.4.24/drivers/parport/parport_pc.c 2003-06-13 07:51:35.000000000 -0700
++++ linux-2.4.24-new/drivers/parport/parport_pc.c 2004-05-04 12:20:40.594840200 -0700
+@@ -414,7 +414,8 @@
+ left -= 16;
+ } else {
+ /* grab single byte from the warp fifo */
+- *((char *)buf)++ = inb (EPPDATA (port));
++ *((char *)buf) = inb (EPPDATA (port));
++ buf++;
+ got++;
+ left--;
+ }
+@@ -441,7 +442,8 @@
+ return length;
+ }
+ for (; got < length; got++) {
+- *((char*)buf)++ = inb (EPPDATA(port));
++ *((char*)buf) = inb (EPPDATA(port));
++ buf++;
+ if (inb (STATUS (port)) & 0x01) {
+ /* EPP timeout */
+ clear_epp_timeout (port);
+@@ -470,7 +472,8 @@
+ return length;
+ }
+ for (; written < length; written++) {
+- outb (*((char*)buf)++, EPPDATA(port));
++ outb (*((char*)buf), EPPDATA(port));
++ buf++;
+ if (inb (STATUS(port)) & 0x01) {
+ clear_epp_timeout (port);
+ break;
+@@ -494,7 +497,8 @@
+ return length;
+ }
+ for (; got < length; got++) {
+- *((char*)buf)++ = inb (EPPADDR (port));
++ *((char*)buf) = inb (EPPADDR (port));
++ buf++;
+ if (inb (STATUS (port)) & 0x01) {
+ clear_epp_timeout (port);
+ break;
+@@ -519,7 +523,8 @@
+ return length;
+ }
+ for (; written < length; written++) {
+- outb (*((char*)buf)++, EPPADDR (port));
++ outb (*((char*)buf), EPPADDR (port));
++ buf++;
+ if (inb (STATUS (port)) & 0x01) {
+ clear_epp_timeout (port);
+ break;
+diff -urN linux-2.4.24/drivers/pcmcia/bulkmem.c linux-2.4.24-new/drivers/pcmcia/bulkmem.c
+--- linux-2.4.24/drivers/pcmcia/bulkmem.c 2002-11-28 16:53:14.000000000 -0700
++++ linux-2.4.24-new/drivers/pcmcia/bulkmem.c 2004-05-04 12:20:40.595840048 -0700
+@@ -301,7 +301,7 @@
+ {
+ window_handle_t w;
+ int ret = pcmcia_request_window(a1, a2, &w);
+- (window_handle_t *)a1 = w;
++ a1 = w;
+ return ret;
+ }
+ break;
+diff -urN linux-2.4.24/drivers/usb/hid-core.c linux-2.4.24-new/drivers/usb/hid-core.c
+--- linux-2.4.24/drivers/usb/hid-core.c 2003-08-25 04:44:42.000000000 -0700
++++ linux-2.4.24-new/drivers/usb/hid-core.c 2004-05-04 12:20:40.595840048 -0700
+@@ -613,14 +613,16 @@
+
+ case 2:
+ if ((end - start) >= 2) {
+- item->data.u16 = le16_to_cpu( get_unaligned(((__u16*)start)++));
++ item->data.u16 = le16_to_cpu(get_unaligned((__u16*)start));
++ start = (__u8 *)((__u16 *)start + 1);
+ return start;
+ }
+
+ case 3:
+ item->size++;
+ if ((end - start) >= 4) {
+- item->data.u32 = le32_to_cpu( get_unaligned(((__u32*)start)++));
++ item->data.u32 = le32_to_cpu(get_unaligned((__u32*)start));
++ start = (__u8 *)((__u32 *)start + 1);
+ return start;
+ }
+ }
+diff -urN linux-2.4.24/drivers/video/fbcon.c linux-2.4.24-new/drivers/video/fbcon.c
+--- linux-2.4.24/drivers/video/fbcon.c 2003-08-25 04:44:42.000000000 -0700
++++ linux-2.4.24-new/drivers/video/fbcon.c 2004-05-04 12:20:40.597839744 -0700
+@@ -1877,7 +1877,10 @@
+ font length must be multiple of 256, at least. And 256 is multiple
+ of 4 */
+ k = 0;
+- while (p > new_data) k += *--(u32 *)p;
++ while (p > new_data) {
++ p = (u8 *)((u32 *)p - 1);
++ k += *(u32 *) p;
++ }
+ FNTSUM(new_data) = k;
+ /* Check if the same font is on some other console already */
+ for (i = 0; i < MAX_NR_CONSOLES; i++) {
+diff -urN linux-2.4.24/fs/buffer.c linux-2.4.24-new/fs/buffer.c
+--- linux-2.4.24/fs/buffer.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/fs/buffer.c 2004-05-04 12:20:40.598839592 -0700
+@@ -130,7 +130,7 @@
+ int bdflush_min[N_PARAM] = { 0, 1, 0, 0, 0, 1*HZ, 0, 0, 0};
+ int bdflush_max[N_PARAM] = {100,50000, 20000, 20000,10000*HZ, 10000*HZ, 100, 100, 0};
+
+-void unlock_buffer(struct buffer_head *bh)
++void fastcall unlock_buffer(struct buffer_head *bh)
+ {
+ clear_bit(BH_Wait_IO, &bh->b_state);
+ clear_bit(BH_Launder, &bh->b_state);
+@@ -613,7 +613,7 @@
+ return bh;
+ }
+
+-void buffer_insert_list(struct buffer_head *bh, struct list_head *list)
++void fastcall buffer_insert_list(struct buffer_head *bh, struct list_head *list)
+ {
+ spin_lock(&lru_list_lock);
+ if (buffer_attached(bh))
+@@ -1056,7 +1056,7 @@
+ }
+ EXPORT_SYMBOL(balance_dirty);
+
+-inline void __mark_dirty(struct buffer_head *bh)
++inline void fastcall __mark_dirty(struct buffer_head *bh)
+ {
+ bh->b_flushtime = jiffies + bdf_prm.b_un.age_buffer;
+ refile_buffer(bh);
+@@ -1064,13 +1064,13 @@
+
+ /* atomic version, the user must call balance_dirty() by hand
+ as soon as it become possible to block */
+-void __mark_buffer_dirty(struct buffer_head *bh)
++void fastcall __mark_buffer_dirty(struct buffer_head *bh)
+ {
+ if (!atomic_set_buffer_dirty(bh))
+ __mark_dirty(bh);
+ }
+
+-void mark_buffer_dirty(struct buffer_head *bh)
++void fastcall mark_buffer_dirty(struct buffer_head *bh)
+ {
+ if (!atomic_set_buffer_dirty(bh)) {
+ if (block_dump)
+@@ -2693,7 +2693,7 @@
+ * obtain a reference to a buffer head within a page. So we must
+ * lock out all of these paths to cleanly toss the page.
+ */
+-int try_to_free_buffers(struct page * page, unsigned int gfp_mask)
++int fastcall try_to_free_buffers(struct page * page, unsigned int gfp_mask)
+ {
+ struct buffer_head * tmp, * bh = page->buffers;
+
+diff -urN linux-2.4.24/fs/file_table.c linux-2.4.24-new/fs/file_table.c
+--- linux-2.4.24/fs/file_table.c 2002-11-28 16:53:15.000000000 -0700
++++ linux-2.4.24-new/fs/file_table.c 2004-05-04 12:20:40.598839592 -0700
+@@ -97,7 +97,7 @@
+ return 0;
+ }
+
+-void fput(struct file * file)
++void fastcall fput(struct file * file)
+ {
+ struct dentry * dentry = file->f_dentry;
+ struct vfsmount * mnt = file->f_vfsmnt;
+@@ -126,7 +126,7 @@
+ }
+ }
+
+-struct file * fget(unsigned int fd)
++struct file * fastcall fget(unsigned int fd)
+ {
+ struct file * file;
+ struct files_struct *files = current->files;
+diff -urN linux-2.4.24/fs/namei.c linux-2.4.24-new/fs/namei.c
+--- linux-2.4.24/fs/namei.c 2003-08-25 04:44:43.000000000 -0700
++++ linux-2.4.24-new/fs/namei.c 2004-05-04 12:20:40.599839440 -0700
+@@ -447,7 +447,7 @@
+ *
+ * We expect 'base' to be positive and a directory.
+ */
+-int link_path_walk(const char * name, struct nameidata *nd)
++int fastcall link_path_walk(const char * name, struct nameidata *nd)
+ {
+ struct dentry *dentry;
+ struct inode *inode;
+@@ -653,7 +653,7 @@
+ return err;
+ }
+
+-int path_walk(const char * name, struct nameidata *nd)
++int fastcall path_walk(const char * name, struct nameidata *nd)
+ {
+ current->total_link_count = 0;
+ return link_path_walk(name, nd);
+@@ -741,7 +741,7 @@
+ }
+
+ /* SMP-safe */
+-int path_lookup(const char *path, unsigned flags, struct nameidata *nd)
++int fastcall path_lookup(const char *path, unsigned flags, struct nameidata *nd)
+ {
+ int error = 0;
+ if (path_init(path, flags, nd))
+@@ -751,7 +751,7 @@
+
+
+ /* SMP-safe */
+-int path_init(const char *name, unsigned int flags, struct nameidata *nd)
++int fastcall path_init(const char *name, unsigned int flags, struct nameidata *nd)
+ {
+ nd->last_type = LAST_ROOT; /* if there are only slashes... */
+ nd->flags = flags;
+@@ -847,7 +847,7 @@
+ * that namei follows links, while lnamei does not.
+ * SMP-safe
+ */
+-int __user_walk(const char *name, unsigned flags, struct nameidata *nd)
++int fastcall __user_walk(const char *name, unsigned flags, struct nameidata *nd)
+ {
+ char *tmp;
+ int err;
+diff -urN linux-2.4.24/fs/readdir.c linux-2.4.24-new/fs/readdir.c
+--- linux-2.4.24/fs/readdir.c 2002-08-02 17:39:45.000000000 -0700
++++ linux-2.4.24-new/fs/readdir.c 2004-05-04 12:20:40.599839440 -0700
+@@ -263,7 +263,7 @@
+ put_user(reclen, &dirent->d_reclen);
+ copy_to_user(dirent->d_name, name, namlen);
+ put_user(0, dirent->d_name + namlen);
+- ((char *) dirent) += reclen;
++ dirent = (void*)dirent + reclen;
+ buf->current_dir = dirent;
+ buf->count -= reclen;
+ return 0;
+@@ -346,7 +346,7 @@
+ copy_to_user(dirent, &d, NAME_OFFSET(&d));
+ copy_to_user(dirent->d_name, name, namlen);
+ put_user(0, dirent->d_name + namlen);
+- ((char *) dirent) += reclen;
++ dirent = (void*)dirent + reclen;
+ buf->current_dir = dirent;
+ buf->count -= reclen;
+ return 0;
+diff -urN linux-2.4.24/include/asm-i386/apic.h linux-2.4.24-new/include/asm-i386/apic.h
+--- linux-2.4.24/include/asm-i386/apic.h 2002-08-02 17:39:45.000000000 -0700
++++ linux-2.4.24-new/include/asm-i386/apic.h 2004-05-04 12:25:47.385200976 -0700
+@@ -77,7 +77,7 @@
+ extern void smp_local_timer_interrupt (struct pt_regs * regs);
+ extern void setup_APIC_clocks (void);
+ extern void setup_apic_nmi_watchdog (void);
+-extern inline void nmi_watchdog_tick (struct pt_regs * regs);
++extern void nmi_watchdog_tick (struct pt_regs * regs);
+ extern int APIC_init_uniprocessor (void);
+ extern void disable_APIC_timer(void);
+ extern void enable_APIC_timer(void);
+diff -urN linux-2.4.24/include/asm-i386/rwsem.h linux-2.4.24-new/include/asm-i386/rwsem.h
+--- linux-2.4.24/include/asm-i386/rwsem.h 2002-11-28 16:53:15.000000000 -0700
++++ linux-2.4.24-new/include/asm-i386/rwsem.h 2004-05-04 12:25:47.337208272 -0700
+@@ -113,8 +113,8 @@
+ " jmp 1b\n"
+ LOCK_SECTION_END
+ "# ending down_read\n\t"
+- : "+m"(sem->count)
+- : "a"(sem)
++ : "=m"(sem->count)
++ : "a"(sem), "m"(sem->count)
+ : "memory", "cc");
+ }
+
+@@ -151,8 +151,8 @@
+ tmp = RWSEM_ACTIVE_WRITE_BIAS;
+ __asm__ __volatile__(
+ "# beginning down_write\n\t"
+-LOCK_PREFIX " xadd %0,(%%eax)\n\t" /* subtract 0x0000ffff, returns the old value */
+- " testl %0,%0\n\t" /* was the count 0 before? */
++LOCK_PREFIX " xadd %%edx,(%%eax)\n\t" /* subtract 0x0000ffff, returns the old value */
++ " testl %%edx,%%edx\n\t" /* was the count 0 before? */
+ " jnz 2f\n\t" /* jump if we weren't granted the lock */
+ "1:\n\t"
+ LOCK_SECTION_START("")
+@@ -163,8 +163,8 @@
+ " jmp 1b\n"
+ LOCK_SECTION_END
+ "# ending down_write"
+- : "+d"(tmp), "+m"(sem->count)
+- : "a"(sem)
++ : "=m"(sem->count), "=d"(tmp)
++ : "a"(sem), "1"(tmp), "m"(sem->count)
+ : "memory", "cc");
+ }
+
+@@ -202,8 +202,8 @@
+ " jmp 1b\n"
+ LOCK_SECTION_END
+ "# ending __up_read\n"
+- : "+m"(sem->count), "+d"(tmp)
+- : "a"(sem)
++ : "=m"(sem->count), "=d"(tmp)
++ : "a"(sem), "1"(tmp), "m"(sem->count)
+ : "memory", "cc");
+ }
+
+@@ -228,8 +228,8 @@
+ " jmp 1b\n"
+ LOCK_SECTION_END
+ "# ending __up_write\n"
+- : "+m"(sem->count)
+- : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS)
++ : "=m"(sem->count)
++ : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS), "m"(sem->count)
+ : "memory", "cc", "edx");
+ }
+
+diff -urN linux-2.4.24/include/asm-i386/unistd.h linux-2.4.24-new/include/asm-i386/unistd.h
+--- linux-2.4.24/include/asm-i386/unistd.h 2002-11-28 16:53:15.000000000 -0700
++++ linux-2.4.24-new/include/asm-i386/unistd.h 2004-05-04 12:20:40.600839288 -0700
+@@ -372,7 +372,7 @@
+ static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
+ static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
+ static inline _syscall1(int,close,int,fd)
+-static inline _syscall1(int,_exit,int,exitcode)
++static inline _syscall1(void,_exit,int,exitcode)
+ static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
+ static inline _syscall1(int,delete_module,const char *,name)
+
+diff -urN linux-2.4.24/include/asm-ppc/unistd.h linux-2.4.24-new/include/asm-ppc/unistd.h
+--- linux-2.4.24/include/asm-ppc/unistd.h 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/include/asm-ppc/unistd.h 2004-05-04 12:20:40.600839288 -0700
+@@ -382,7 +382,7 @@
+ static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
+ static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
+ static inline _syscall1(int,close,int,fd)
+-static inline _syscall1(int,_exit,int,exitcode)
++static inline _syscall1(void,_exit,int,exitcode)
+ static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
+ static inline _syscall1(int,delete_module,const char *,name)
+
+diff -urN linux-2.4.24/include/asm-x86_64/unistd.h linux-2.4.24-new/include/asm-x86_64/unistd.h
+--- linux-2.4.24/include/asm-x86_64/unistd.h 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/include/asm-x86_64/unistd.h 2004-05-04 12:20:40.601839136 -0700
+@@ -673,7 +673,7 @@
+ }
+
+ extern long sys_exit(int) __attribute__((noreturn));
+-extern inline long exit(int error_code)
++static inline void exit(int error_code)
+ {
+ sys_exit(error_code);
+ }
+diff -urN linux-2.4.24/include/linux/blkdev.h linux-2.4.24-new/include/linux/blkdev.h
+--- linux-2.4.24/include/linux/blkdev.h 2003-08-25 04:44:44.000000000 -0700
++++ linux-2.4.24-new/include/linux/blkdev.h 2004-05-04 12:25:47.425194896 -0700
+@@ -233,7 +233,7 @@
+ extern void grok_partitions(struct gendisk *dev, int drive, unsigned minors, long size);
+ extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size);
+ extern void generic_make_request(int rw, struct buffer_head * bh);
+-extern inline request_queue_t *blk_get_queue(kdev_t dev);
++extern request_queue_t *blk_get_queue(kdev_t dev);
+ extern void blkdev_release_request(struct request *);
+
+ /*
+diff -urN linux-2.4.24/include/linux/compiler.h linux-2.4.24-new/include/linux/compiler.h
+--- linux-2.4.24/include/linux/compiler.h 2001-09-18 14:12:45.000000000 -0700
++++ linux-2.4.24-new/include/linux/compiler.h 2004-05-04 12:25:41.704064640 -0700
+@@ -13,4 +13,12 @@
+ #define likely(x) __builtin_expect((x),1)
+ #define unlikely(x) __builtin_expect((x),0)
+
++#if __GNUC__ == 3
++#if __GNUC_MINOR__ >= 1 && __GNUC_MINOR__ < 4
++# define inline __inline__ __attribute__((always_inline))
++# define __inline__ __inline__ __attribute__((always_inline))
++# define __inline __inline__ __attribute__((always_inline))
++#endif
++#endif /* __GNUC__ */
++
+ #endif /* __LINUX_COMPILER_H */
+diff -urN linux-2.4.24/include/linux/ide.h linux-2.4.24-new/include/linux/ide.h
+--- linux-2.4.24/include/linux/ide.h 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/include/linux/ide.h 2004-05-04 12:26:04.153651784 -0700
+@@ -1446,10 +1446,10 @@
+ void *special;
+ } pkt_task_t;
+
+-extern inline void SELECT_DRIVE(ide_drive_t *);
+-extern inline void SELECT_INTERRUPT(ide_drive_t *);
+-extern inline void SELECT_MASK(ide_drive_t *, int);
+-extern inline void QUIRK_LIST(ide_drive_t *);
++extern void SELECT_DRIVE(ide_drive_t *);
++extern void SELECT_INTERRUPT(ide_drive_t *);
++extern void SELECT_MASK(ide_drive_t *, int);
++extern void QUIRK_LIST(ide_drive_t *);
+
+ extern void ata_input_data(ide_drive_t *, void *, u32);
+ extern void ata_output_data(ide_drive_t *, void *, u32);
+diff -urN linux-2.4.24/include/linux/irq_cpustat.h linux-2.4.24-new/include/linux/irq_cpustat.h
+--- linux-2.4.24/include/linux/irq_cpustat.h 2001-11-22 12:46:18.000000000 -0700
++++ linux-2.4.24-new/include/linux/irq_cpustat.h 2004-05-04 12:25:47.413196720 -0700
+@@ -22,7 +22,7 @@
+ #ifdef CONFIG_SMP
+ #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)
+ #else
+-#define __IRQ_STAT(cpu, member) ((void)(cpu), irq_stat[0].member)
++#define __IRQ_STAT(cpu, member) (irq_stat[((void)(cpu), 0)].member)
+ #endif
+
+ /* arch independent irq_stat fields */
+diff -urN linux-2.4.24/include/linux/kernel.h linux-2.4.24-new/include/linux/kernel.h
+--- linux-2.4.24/include/linux/kernel.h 2002-11-28 16:53:15.000000000 -0700
++++ linux-2.4.24-new/include/linux/kernel.h 2004-05-04 12:25:47.305213136 -0700
+@@ -51,8 +51,10 @@
+
+ #ifdef __i386__
+ #define FASTCALL(x) x __attribute__((regparm(3)))
++#define fastcall __attribute__((regparm(3)))
+ #else
+ #define FASTCALL(x) x
++#define fastcall
+ #endif
+
+ struct completion;
+diff -urN linux-2.4.24/include/linux/sched.h linux-2.4.24-new/include/linux/sched.h
+--- linux-2.4.24/include/linux/sched.h 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/include/linux/sched.h 2004-05-04 12:25:47.400198696 -0700
+@@ -761,7 +761,7 @@
+ extern void end_lazy_tlb(struct mm_struct *mm);
+
+ /* mmdrop drops the mm and the page tables */
+-extern inline void FASTCALL(__mmdrop(struct mm_struct *));
++extern void FASTCALL(__mmdrop(struct mm_struct *));
+ static inline void mmdrop(struct mm_struct * mm)
+ {
+ if (atomic_dec_and_test(&mm->mm_count))
+diff -urN linux-2.4.24/include/linux/smp.h linux-2.4.24-new/include/linux/smp.h
+--- linux-2.4.24/include/linux/smp.h 2001-11-22 12:46:19.000000000 -0700
++++ linux-2.4.24-new/include/linux/smp.h 2004-05-04 12:25:47.387200672 -0700
+@@ -26,7 +26,7 @@
+ /*
+ * sends a 'reschedule' event to another CPU:
+ */
+-extern void FASTCALL(smp_send_reschedule(int cpu));
++extern void smp_send_reschedule(int cpu);
+
+
+ /*
+diff -urN linux-2.4.24/include/net/ip.h linux-2.4.24-new/include/net/ip.h
+--- linux-2.4.24/include/net/ip.h 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/include/net/ip.h 2004-05-04 12:28:47.997743696 -0700
+@@ -137,7 +137,7 @@
+ void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg,
+ unsigned int len);
+
+-extern __inline__ int ip_finish_output(struct sk_buff *skb);
++extern int ip_finish_output(struct sk_buff *skb);
+
+ struct ipv4_config
+ {
+diff -urN linux-2.4.24/kernel/fork.c linux-2.4.24-new/kernel/fork.c
+--- linux-2.4.24/kernel/fork.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/kernel/fork.c 2004-05-04 12:20:40.604838680 -0700
+@@ -39,7 +39,7 @@
+
+ struct task_struct *pidhash[PIDHASH_SZ];
+
+-void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
++void fastcall add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
+ {
+ unsigned long flags;
+
+@@ -49,7 +49,7 @@
+ wq_write_unlock_irqrestore(&q->lock, flags);
+ }
+
+-void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)
++void fastcall add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)
+ {
+ unsigned long flags;
+
+@@ -59,7 +59,7 @@
+ wq_write_unlock_irqrestore(&q->lock, flags);
+ }
+
+-void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
++void fastcall remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
+ {
+ unsigned long flags;
+
+@@ -262,7 +262,7 @@
+ * is dropped: either by a lazy thread or by
+ * mmput. Free the page directory and the mm.
+ */
+-inline void __mmdrop(struct mm_struct *mm)
++void fastcall __mmdrop(struct mm_struct *mm)
+ {
+ BUG_ON(mm == &init_mm);
+ pgd_free(mm->pgd);
+diff -urN linux-2.4.24/kernel/sched.c linux-2.4.24-new/kernel/sched.c
+--- linux-2.4.24/kernel/sched.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/kernel/sched.c 2004-05-04 12:20:40.605838528 -0700
+@@ -209,7 +209,7 @@
+ */
+ static FASTCALL(void reschedule_idle(struct task_struct * p));
+
+-static void reschedule_idle(struct task_struct * p)
++static void fastcall reschedule_idle(struct task_struct * p)
+ {
+ #ifdef CONFIG_SMP
+ int this_cpu = smp_processor_id();
+@@ -367,7 +367,7 @@
+ return success;
+ }
+
+-inline int wake_up_process(struct task_struct * p)
++inline int fastcall wake_up_process(struct task_struct * p)
+ {
+ return try_to_wake_up(p, 0);
+ }
+@@ -405,7 +405,7 @@
+ *
+ * In all cases the return value is guaranteed to be non-negative.
+ */
+-signed long schedule_timeout(signed long timeout)
++signed long fastcall schedule_timeout(signed long timeout)
+ {
+ struct timer_list timer;
+ unsigned long expire;
+@@ -735,7 +735,7 @@
+ }
+ }
+
+-void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr)
++void fastcall __wake_up(wait_queue_head_t *q, unsigned int mode, int nr)
+ {
+ if (q) {
+ unsigned long flags;
+@@ -745,7 +745,7 @@
+ }
+ }
+
+-void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr)
++void fastcall __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr)
+ {
+ if (q) {
+ unsigned long flags;
+@@ -755,7 +755,7 @@
+ }
+ }
+
+-void complete(struct completion *x)
++void fastcall complete(struct completion *x)
+ {
+ unsigned long flags;
+
+@@ -765,7 +765,7 @@
+ spin_unlock_irqrestore(&x->wait.lock, flags);
+ }
+
+-void wait_for_completion(struct completion *x)
++void fastcall wait_for_completion(struct completion *x)
+ {
+ spin_lock_irq(&x->wait.lock);
+ if (!x->done) {
+@@ -800,7 +800,7 @@
+ __remove_wait_queue(q, &wait); \
+ wq_write_unlock_irqrestore(&q->lock,flags);
+
+-void interruptible_sleep_on(wait_queue_head_t *q)
++void fastcall interruptible_sleep_on(wait_queue_head_t *q)
+ {
+ SLEEP_ON_VAR
+
+@@ -811,7 +811,7 @@
+ SLEEP_ON_TAIL
+ }
+
+-long interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
++long fastcall interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
+ {
+ SLEEP_ON_VAR
+
+@@ -824,7 +824,7 @@
+ return timeout;
+ }
+
+-void sleep_on(wait_queue_head_t *q)
++void fastcall sleep_on(wait_queue_head_t *q)
+ {
+ SLEEP_ON_VAR
+
+@@ -835,7 +835,7 @@
+ SLEEP_ON_TAIL
+ }
+
+-long sleep_on_timeout(wait_queue_head_t *q, long timeout)
++long fastcall sleep_on_timeout(wait_queue_head_t *q, long timeout)
+ {
+ SLEEP_ON_VAR
+
+diff -urN linux-2.4.24/kernel/softirq.c linux-2.4.24-new/kernel/softirq.c
+--- linux-2.4.24/kernel/softirq.c 2002-11-28 16:53:15.000000000 -0700
++++ linux-2.4.24-new/kernel/softirq.c 2004-05-04 12:20:40.605838528 -0700
+@@ -111,7 +111,7 @@
+ /*
+ * This function must run with irq disabled!
+ */
+-inline void cpu_raise_softirq(unsigned int cpu, unsigned int nr)
++inline void fastcall cpu_raise_softirq(unsigned int cpu, unsigned int nr)
+ {
+ __cpu_raise_softirq(cpu, nr);
+
+@@ -128,7 +128,7 @@
+ wakeup_softirqd(cpu);
+ }
+
+-void raise_softirq(unsigned int nr)
++void fastcall raise_softirq(unsigned int nr)
+ {
+ unsigned long flags;
+
+@@ -149,7 +149,7 @@
+ struct tasklet_head tasklet_vec[NR_CPUS] __cacheline_aligned;
+ struct tasklet_head tasklet_hi_vec[NR_CPUS] __cacheline_aligned;
+
+-void __tasklet_schedule(struct tasklet_struct *t)
++void fastcall __tasklet_schedule(struct tasklet_struct *t)
+ {
+ int cpu = smp_processor_id();
+ unsigned long flags;
+@@ -161,7 +161,7 @@
+ local_irq_restore(flags);
+ }
+
+-void __tasklet_hi_schedule(struct tasklet_struct *t)
++void fastcall __tasklet_hi_schedule(struct tasklet_struct *t)
+ {
+ int cpu = smp_processor_id();
+ unsigned long flags;
+diff -urN linux-2.4.24/kernel/sysctl.c linux-2.4.24-new/kernel/sysctl.c
+--- linux-2.4.24/kernel/sysctl.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/kernel/sysctl.c 2004-05-04 12:20:40.605838528 -0700
+@@ -876,7 +876,7 @@
+ if (!isspace(c))
+ break;
+ left--;
+- ((char *) buffer)++;
++ buffer++;
+ }
+ if (!left)
+ break;
+@@ -1029,7 +1029,7 @@
+ if (!isspace(c))
+ break;
+ left--;
+- ((char *) buffer)++;
++ buffer++;
+ }
+ if (!left)
+ break;
+@@ -1130,7 +1130,7 @@
+ if (!isspace(c))
+ break;
+ left--;
+- ((char *) buffer)++;
++ buffer++;
+ }
+ if (!left)
+ break;
+diff -urN linux-2.4.24/lib/brlock.c linux-2.4.24-new/lib/brlock.c
+--- linux-2.4.24/lib/brlock.c 2001-11-09 15:11:15.000000000 -0700
++++ linux-2.4.24-new/lib/brlock.c 2004-05-04 12:20:40.606838376 -0700
+@@ -20,7 +20,7 @@
+ brlock_read_lock_t __brlock_array[NR_CPUS][__BR_IDX_MAX] =
+ { [0 ... NR_CPUS-1] = { [0 ... __BR_IDX_MAX-1] = RW_LOCK_UNLOCKED } };
+
+-void __br_write_lock (enum brlock_indices idx)
++void fastcall __br_write_lock (enum brlock_indices idx)
+ {
+ int i;
+
+@@ -28,7 +28,7 @@
+ write_lock(&__brlock_array[cpu_logical_map(i)][idx]);
+ }
+
+-void __br_write_unlock (enum brlock_indices idx)
++void fastcall __br_write_unlock (enum brlock_indices idx)
+ {
+ int i;
+
+@@ -44,7 +44,7 @@
+ struct br_wrlock __br_write_locks[__BR_IDX_MAX] =
+ { [0 ... __BR_IDX_MAX-1] = { SPIN_LOCK_UNLOCKED } };
+
+-void __br_write_lock (enum brlock_indices idx)
++void fastcall __br_write_lock (enum brlock_indices idx)
+ {
+ int i;
+
+@@ -59,7 +59,7 @@
+ }
+ }
+
+-void __br_write_unlock (enum brlock_indices idx)
++void fastcall __br_write_unlock (enum brlock_indices idx)
+ {
+ spin_unlock(&__br_write_locks[idx].lock);
+ }
+diff -urN linux-2.4.24/lib/crc32.c linux-2.4.24-new/lib/crc32.c
+--- linux-2.4.24/lib/crc32.c 2003-08-25 04:44:44.000000000 -0700
++++ linux-2.4.24-new/lib/crc32.c 2004-05-04 12:20:40.606838376 -0700
+@@ -100,7 +100,9 @@
+ /* Align it */
+ if(unlikely(((long)b)&3 && len)){
+ do {
+- DO_CRC(*((u8 *)b)++);
++ u8 *p = (u8 *)b;
++ DO_CRC(*p++);
++ b = (void *)p;
+ } while ((--len) && ((long)b)&3 );
+ }
+ if(likely(len >= 4)){
+@@ -121,7 +123,9 @@
+ /* And the last few bytes */
+ if(len){
+ do {
+- DO_CRC(*((u8 *)b)++);
++ u8 *p = (u8 *)b;
++ DO_CRC(*p++);
++ b = (void *)p;
+ } while (--len);
+ }
+
+@@ -201,7 +205,9 @@
+ /* Align it */
+ if(unlikely(((long)b)&3 && len)){
+ do {
+- DO_CRC(*((u8 *)b)++);
++ u8 *p = (u8 *)b;
++ DO_CRC(*p++);
++ b = (u32 *)p;
+ } while ((--len) && ((long)b)&3 );
+ }
+ if(likely(len >= 4)){
+@@ -222,7 +228,9 @@
+ /* And the last few bytes */
+ if(len){
+ do {
+- DO_CRC(*((u8 *)b)++);
++ u8 *p = (u8 *)b;
++ DO_CRC(*p++);
++ b = (void *)p;
+ } while (--len);
+ }
+ return __be32_to_cpu(crc);
+diff -urN linux-2.4.24/lib/rwsem.c linux-2.4.24-new/lib/rwsem.c
+--- linux-2.4.24/lib/rwsem.c 2001-07-10 20:08:51.000000000 -0700
++++ linux-2.4.24-new/lib/rwsem.c 2004-05-04 12:20:40.606838376 -0700
+@@ -152,7 +152,7 @@
+ /*
+ * wait for the read lock to be granted
+ */
+-struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem)
++struct rw_semaphore * fastcall rwsem_down_read_failed(struct rw_semaphore *sem)
+ {
+ struct rwsem_waiter waiter;
+
+@@ -168,7 +168,7 @@
+ /*
+ * wait for the write lock to be granted
+ */
+-struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem)
++struct rw_semaphore * fastcall rwsem_down_write_failed(struct rw_semaphore *sem)
+ {
+ struct rwsem_waiter waiter;
+
+@@ -185,7 +185,7 @@
+ * handle waking up a waiter on the semaphore
+ * - up_read has decremented the active part of the count if we come here
+ */
+-struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem)
++struct rw_semaphore * fastcall rwsem_wake(struct rw_semaphore *sem)
+ {
+ rwsemtrace(sem,"Entering rwsem_wake");
+
+diff -urN linux-2.4.24/lib/string.c linux-2.4.24-new/lib/string.c
+--- linux-2.4.24/lib/string.c 2002-08-02 17:39:46.000000000 -0700
++++ linux-2.4.24-new/lib/string.c 2004-05-04 12:20:40.606838376 -0700
+@@ -380,14 +380,13 @@
+ * You should not use this function to access IO space, use memcpy_toio()
+ * or memcpy_fromio() instead.
+ */
+-char * bcopy(const char * src, char * dest, int count)
++void bcopy(const void * srcp, void * destp, size_t count)
+ {
+- char *tmp = dest;
++ const char *src = srcp;
++ char *dest = destp;
+
+ while (count--)
+- *tmp++ = *src++;
+-
+- return dest;
++ *dest++ = *src++;
+ }
+ #endif
+
+diff -urN linux-2.4.24/mm/filemap.c linux-2.4.24-new/mm/filemap.c
+--- linux-2.4.24/mm/filemap.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/filemap.c 2004-05-04 12:20:40.608838072 -0700
+@@ -68,7 +68,7 @@
+ #define CLUSTER_OFFSET(x) (((x) >> page_cluster) << page_cluster)
+
+ static void FASTCALL(add_page_to_hash_queue(struct page * page, struct page **p));
+-static void add_page_to_hash_queue(struct page * page, struct page **p)
++static void fastcall add_page_to_hash_queue(struct page * page, struct page **p)
+ {
+ struct page *next = *p;
+
+@@ -149,7 +149,7 @@
+ /*
+ * Add a page to the dirty page list.
+ */
+-void set_page_dirty(struct page *page)
++void fastcall set_page_dirty(struct page *page)
+ {
+ if (!test_and_set_bit(PG_dirty, &page->flags)) {
+ struct address_space *mapping = page->mapping;
+@@ -258,7 +258,7 @@
+ }
+
+ static int FASTCALL(truncate_list_pages(struct list_head *, unsigned long, unsigned *));
+-static int truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial)
++static int fastcall truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial)
+ {
+ struct list_head *curr;
+ struct page * page;
+@@ -380,7 +380,7 @@
+ }
+
+ static int FASTCALL(invalidate_list_pages2(struct list_head *));
+-static int invalidate_list_pages2(struct list_head *head)
++static int fastcall invalidate_list_pages2(struct list_head *head)
+ {
+ struct list_head *curr;
+ struct page * page;
+@@ -710,7 +710,7 @@
+ * and schedules an I/O to read in its contents from disk.
+ */
+ static int FASTCALL(page_cache_read(struct file * file, unsigned long offset));
+-static int page_cache_read(struct file * file, unsigned long offset)
++static int fastcall page_cache_read(struct file * file, unsigned long offset)
+ {
+ struct address_space *mapping = file->f_dentry->d_inode->i_mapping;
+ struct page **hash = page_hash(mapping, offset);
+@@ -745,7 +745,7 @@
+ */
+ static int FASTCALL(read_cluster_nonblocking(struct file * file, unsigned long offset,
+ unsigned long filesize));
+-static int read_cluster_nonblocking(struct file * file, unsigned long offset,
++static int fastcall read_cluster_nonblocking(struct file * file, unsigned long offset,
+ unsigned long filesize)
+ {
+ unsigned long pages = CLUSTER_PAGES;
+@@ -826,7 +826,7 @@
+ * callbacks that would result into the blkdev layer waking
+ * up the page after a queue unplug.
+ */
+-void wakeup_page_waiters(struct page * page)
++void fastcall wakeup_page_waiters(struct page * page)
+ {
+ wait_queue_head_t * head;
+
+@@ -882,7 +882,7 @@
+ * of the waiters for all of the pages in the appropriate
+ * wait queue are woken.
+ */
+-void unlock_page(struct page *page)
++void fastcall unlock_page(struct page *page)
+ {
+ wait_queue_head_t *waitqueue = page_waitqueue(page);
+ ClearPageLaunder(page);
+@@ -929,7 +929,7 @@
+ * Get an exclusive lock on the page, optimistically
+ * assuming it's not locked..
+ */
+-void lock_page(struct page *page)
++void fastcall lock_page(struct page *page)
+ {
+ if (TryLockPage(page))
+ __lock_page(page);
+@@ -980,7 +980,7 @@
+ * during blocking operations..
+ */
+ static struct page * FASTCALL(__find_lock_page_helper(struct address_space *, unsigned long, struct page *));
+-static struct page * __find_lock_page_helper(struct address_space *mapping,
++static struct page * fastcall __find_lock_page_helper(struct address_space *mapping,
+ unsigned long offset, struct page *hash)
+ {
+ struct page *page;
+@@ -1340,7 +1340,7 @@
+ * If it was already so marked, move it to the active queue and drop
+ * the referenced bit. Otherwise, just mark it for future action..
+ */
+-void mark_page_accessed(struct page *page)
++void fastcall mark_page_accessed(struct page *page)
+ {
+ if (!PageActive(page) && PageReferenced(page)) {
+ activate_page(page);
+diff -urN linux-2.4.24/mm/highmem.c linux-2.4.24-new/mm/highmem.c
+--- linux-2.4.24/mm/highmem.c 2003-06-13 07:51:39.000000000 -0700
++++ linux-2.4.24-new/mm/highmem.c 2004-05-04 12:27:51.835281688 -0700
+@@ -129,7 +129,7 @@
+ return vaddr;
+ }
+
+-void *kmap_high(struct page *page, int nonblocking)
++void * fastcall kmap_high(struct page *page, int nonblocking)
+ {
+ unsigned long vaddr;
+
+@@ -154,7 +154,7 @@
+ return (void*) vaddr;
+ }
+
+-void kunmap_high(struct page *page)
++void fastcall kunmap_high(struct page *page)
+ {
+ unsigned long vaddr;
+ unsigned long nr;
+diff -urN linux-2.4.24/mm/memory.c linux-2.4.24-new/mm/memory.c
+--- linux-2.4.24/mm/memory.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/memory.c 2004-05-04 12:20:40.608838072 -0700
+@@ -1396,7 +1396,7 @@
+ * On a two-level page table, this ends up actually being entirely
+ * optimized away.
+ */
+-pmd_t *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
++pmd_t fastcall *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
+ {
+ pmd_t *new;
+
+@@ -1430,7 +1430,7 @@
+ * We've already handled the fast-path in-line, and we own the
+ * page table lock.
+ */
+-pte_t *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
++pte_t fastcall *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
+ {
+ if (pmd_none(*pmd)) {
+ pte_t *new;
+diff -urN linux-2.4.24/mm/page_alloc.c linux-2.4.24-new/mm/page_alloc.c
+--- linux-2.4.24/mm/page_alloc.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/page_alloc.c 2004-05-04 12:22:05.157984648 -0700
+@@ -82,7 +82,7 @@
+ */
+
+ static void FASTCALL(__free_pages_ok (struct page *page, unsigned int order));
+-static void __free_pages_ok (struct page *page, unsigned int order)
++static void fastcall __free_pages_ok (struct page *page, unsigned int order)
+ {
+ unsigned long index, page_idx, mask, flags;
+ free_area_t *area;
+@@ -200,7 +200,7 @@
+ }
+
+ static FASTCALL(struct page * rmqueue(zone_t *zone, unsigned int order));
+-static struct page * rmqueue(zone_t *zone, unsigned int order)
++static struct page * fastcall rmqueue(zone_t *zone, unsigned int order)
+ {
+ free_area_t * area = zone->free_area + order;
+ unsigned int curr_order = order;
+@@ -246,7 +246,7 @@
+ }
+
+ #ifndef CONFIG_DISCONTIGMEM
+-struct page *_alloc_pages(unsigned int gfp_mask, unsigned int order)
++struct page * fastcall _alloc_pages(unsigned int gfp_mask, unsigned int order)
+ {
+ return __alloc_pages(gfp_mask, order,
+ contig_page_data.node_zonelists+(gfp_mask & GFP_ZONEMASK));
+@@ -254,7 +254,7 @@
+ #endif
+
+ static struct page * FASTCALL(balance_classzone(zone_t *, unsigned int, unsigned int, int *));
+-static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
++static struct page * fastcall balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
+ {
+ struct page * page = NULL;
+ int __freed;
+@@ -332,7 +332,7 @@
+ /*
+ * This is the 'heart' of the zoned buddy allocator:
+ */
+-struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
++struct page * fastcall __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
+ {
+ zone_t **zone, * classzone;
+ struct page * page;
+@@ -444,7 +444,7 @@
+ /*
+ * Common helper functions.
+ */
+-unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)
++unsigned long fastcall __get_free_pages(unsigned int gfp_mask, unsigned int order)
+ {
+ struct page * page;
+
+@@ -454,7 +454,7 @@
+ return (unsigned long) page_address(page);
+ }
+
+-unsigned long get_zeroed_page(unsigned int gfp_mask)
++unsigned long fastcall get_zeroed_page(unsigned int gfp_mask)
+ {
+ struct page * page;
+
+@@ -467,13 +467,13 @@
+ return 0;
+ }
+
+-void __free_pages(struct page *page, unsigned int order)
++void fastcall __free_pages(struct page *page, unsigned int order)
+ {
+ if (!PageReserved(page) && put_page_testzero(page))
+ __free_pages_ok(page, order);
+ }
+
+-void free_pages(unsigned long addr, unsigned int order)
++void fastcall free_pages(unsigned long addr, unsigned int order)
+ {
+ if (addr != 0)
+ __free_pages(virt_to_page(addr), order);
+diff -urN linux-2.4.24/mm/slab.c linux-2.4.24-new/mm/slab.c
+--- linux-2.4.24/mm/slab.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/slab.c 2004-05-04 12:20:40.611837616 -0700
+@@ -1735,7 +1735,7 @@
+ *
+ * Called from do_try_to_free_pages() and __alloc_pages()
+ */
+-int kmem_cache_reap (int gfp_mask)
++int fastcall kmem_cache_reap (int gfp_mask)
+ {
+ slab_t *slabp;
+ kmem_cache_t *searchp;
+diff -urN linux-2.4.24/mm/swap.c linux-2.4.24-new/mm/swap.c
+--- linux-2.4.24/mm/swap.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/swap.c 2004-05-04 12:20:40.611837616 -0700
+@@ -44,7 +44,7 @@
+ }
+ }
+
+-void activate_page(struct page * page)
++void fastcall activate_page(struct page * page)
+ {
+ spin_lock(&pagemap_lru_lock);
+ activate_page_nolock(page);
+@@ -55,7 +55,7 @@
+ * lru_cache_add: add a page to the page lists
+ * @page: the page to add
+ */
+-void lru_cache_add(struct page * page)
++void fastcall lru_cache_add(struct page * page)
+ {
+ if (!PageLRU(page)) {
+ spin_lock(&pagemap_lru_lock);
+@@ -72,7 +72,7 @@
+ * This function is for when the caller already holds
+ * the pagemap_lru_lock.
+ */
+-void __lru_cache_del(struct page * page)
++void fastcall __lru_cache_del(struct page * page)
+ {
+ if (TestClearPageLRU(page)) {
+ if (PageActive(page)) {
+@@ -87,7 +87,7 @@
+ * lru_cache_del: remove a page from the page lists
+ * @page: the page to remove
+ */
+-void lru_cache_del(struct page * page)
++void fastcall lru_cache_del(struct page * page)
+ {
+ spin_lock(&pagemap_lru_lock);
+ __lru_cache_del(page);
+diff -urN linux-2.4.24/mm/swapfile.c linux-2.4.24-new/mm/swapfile.c
+--- linux-2.4.24/mm/swapfile.c 2003-08-25 04:44:44.000000000 -0700
++++ linux-2.4.24-new/mm/swapfile.c 2004-05-04 12:20:40.611837616 -0700
+@@ -256,7 +256,7 @@
+ * work, but we opportunistically check whether
+ * we need to get all the locks first..
+ */
+-int can_share_swap_page(struct page *page)
++int fastcall can_share_swap_page(struct page *page)
+ {
+ int retval = 0;
+
+@@ -284,7 +284,7 @@
+ * Work out if there are any other processes sharing this
+ * swap cache page. Free it if you can. Return success.
+ */
+-int remove_exclusive_swap_page(struct page *page)
++int fastcall remove_exclusive_swap_page(struct page *page)
+ {
+ int retval;
+ struct swap_info_struct * p;
+diff -urN linux-2.4.24/mm/vmscan.c linux-2.4.24-new/mm/vmscan.c
+--- linux-2.4.24/mm/vmscan.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/mm/vmscan.c 2004-05-04 12:20:40.612837464 -0700
+@@ -323,7 +323,7 @@
+ }
+
+ static int FASTCALL(swap_out(zone_t * classzone));
+-static int swap_out(zone_t * classzone)
++static int fastcall swap_out(zone_t * classzone)
+ {
+ int counter, nr_pages = SWAP_CLUSTER_MAX;
+ struct mm_struct *mm;
+@@ -366,7 +366,7 @@
+
+ static void FASTCALL(refill_inactive(int nr_pages, zone_t * classzone));
+ static int FASTCALL(shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout));
+-static int shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout)
++static int fastcall shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout)
+ {
+ struct list_head * entry;
+ int max_scan = (classzone->nr_inactive_pages + classzone->nr_active_pages) / vm_cache_scan_ratio;
+@@ -577,7 +577,7 @@
+ * We move them the other way when we see the
+ * reference bit on the page.
+ */
+-static void refill_inactive(int nr_pages, zone_t * classzone)
++static void fastcall refill_inactive(int nr_pages, zone_t * classzone)
+ {
+ struct list_head * entry;
+ unsigned long ratio;
+@@ -610,7 +610,7 @@
+ }
+
+ static int FASTCALL(shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout));
+-static int shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout)
++static int fastcall shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout)
+ {
+ nr_pages -= kmem_cache_reap(gfp_mask);
+ if (nr_pages <= 0)
+@@ -627,7 +627,7 @@
+
+ static int check_classzone_need_balance(zone_t * classzone);
+
+-int try_to_free_pages_zone(zone_t *classzone, unsigned int gfp_mask)
++int fastcall try_to_free_pages_zone(zone_t *classzone, unsigned int gfp_mask)
+ {
+ gfp_mask = pf_gfp_mask(gfp_mask);
+
+@@ -661,7 +661,7 @@
+ return 0;
+ }
+
+-int try_to_free_pages(unsigned int gfp_mask)
++int fastcall try_to_free_pages(unsigned int gfp_mask)
+ {
+ pg_data_t *pgdat;
+ zonelist_t *zonelist;
+diff -urN linux-2.4.24/net/ipv4/ip_output.c linux-2.4.24-new/net/ipv4/ip_output.c
+--- linux-2.4.24/net/ipv4/ip_output.c 2003-11-28 11:26:21.000000000 -0700
++++ linux-2.4.24-new/net/ipv4/ip_output.c 2004-05-04 12:20:40.612837464 -0700
+@@ -184,7 +184,7 @@
+ return -EINVAL;
+ }
+
+-__inline__ int ip_finish_output(struct sk_buff *skb)
++int ip_finish_output(struct sk_buff *skb)
+ {
+ struct net_device *dev = skb->dst->dev;
+