]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/linux/linux-geodegx-2.4.24/linux-2.4.24-gcc340-fixes.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / linux / linux-geodegx-2.4.24 / linux-2.4.24-gcc340-fixes.patch
1 diff -urN linux-2.4.24/arch/i386/Makefile linux-2.4.24-new/arch/i386/Makefile
2 --- linux-2.4.24/arch/i386/Makefile     2003-06-13 07:51:29.000000000 -0700
3 +++ linux-2.4.24-new/arch/i386/Makefile 2004-05-04 12:20:40.583841872 -0700
4 @@ -94,6 +94,8 @@
5  CFLAGS += $(call check_gcc,-march=c3-2,-march=i686)
6  endif
7  
8 +CFLAGS += $(call check_gcc,-fno-unit-at-a-time,)
9 +
10  HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
11  
12  SUBDIRS += arch/i386/kernel arch/i386/mm arch/i386/lib
13 diff -urN linux-2.4.24/arch/i386/boot/compressed/misc.c linux-2.4.24-new/arch/i386/boot/compressed/misc.c
14 --- linux-2.4.24/arch/i386/boot/compressed/misc.c       2003-08-25 04:44:39.000000000 -0700
15 +++ linux-2.4.24-new/arch/i386/boot/compressed/misc.c   2004-05-04 12:20:40.583841872 -0700
16 @@ -104,7 +104,7 @@
17  static void *malloc(int size);
18  static void free(void *where);
19  
20 -static void puts(const char *);
21 +static void putstr(const char *);
22  
23  extern int end;
24  static long free_mem_ptr = (long)&end;
25 @@ -165,7 +165,7 @@
26                 vidmem[i] = ' ';
27  }
28  
29 -static void puts(const char *s)
30 +static void putstr(const char *s)
31  {
32         int x,y,pos;
33         char c;
34 @@ -283,9 +283,9 @@
35  
36  static void error(char *x)
37  {
38 -       puts("\n\n");
39 -       puts(x);
40 -       puts("\n\n -- System halted");
41 +       putstr("\n\n");
42 +       putstr(x);
43 +       putstr("\n\n -- System halted");
44  
45         while(1);       /* Halt */
46  }
47 @@ -369,9 +369,9 @@
48         else setup_output_buffer_if_we_run_high(mv);
49  
50         makecrc();
51 -       puts("Uncompressing Linux... ");
52 +       putstr("Uncompressing Linux... ");
53         gunzip();
54 -       puts("Ok, booting the kernel.\n");
55 +       putstr("Ok, booting the kernel.\n");
56         if (high_loaded) close_output_buffer_if_we_run_high(mv);
57         return high_loaded;
58  }
59 diff -urN linux-2.4.24/arch/i386/kernel/io_apic.c linux-2.4.24-new/arch/i386/kernel/io_apic.c
60 --- linux-2.4.24/arch/i386/kernel/io_apic.c     2003-11-28 11:26:19.000000000 -0700
61 +++ linux-2.4.24-new/arch/i386/kernel/io_apic.c 2004-05-04 12:20:40.584841720 -0700
62 @@ -1349,7 +1349,7 @@
63  
64  #ifndef CONFIG_SMP
65  
66 -void send_IPI_self(int vector)
67 +void fastcall send_IPI_self(int vector)
68  {
69         unsigned int cfg;
70  
71 diff -urN linux-2.4.24/arch/i386/kernel/pci-pc.c linux-2.4.24-new/arch/i386/kernel/pci-pc.c
72 --- linux-2.4.24/arch/i386/kernel/pci-pc.c      2003-11-28 11:26:19.000000000 -0700
73 +++ linux-2.4.24-new/arch/i386/kernel/pci-pc.c  2004-05-04 12:20:40.585841568 -0700
74 @@ -1017,11 +1017,13 @@
75                 "1:"
76                 : "=a" (ret),
77                   "=b" (map),
78 -                 "+m" (opt)
79 +                 "=m" (opt)
80                 : "0" (PCIBIOS_GET_ROUTING_OPTIONS),
81                   "1" (0),
82                   "D" ((long) &opt),
83 -                 "S" (&pci_indirect));
84 +                 "S" (&pci_indirect),
85 +                 "m" (opt)
86 +               : "memory");
87         DBG("OK  ret=%d, size=%d, map=%x\n", ret, opt.size, map);
88         if (ret & 0xff00)
89                 printk(KERN_ERR "PCI: Error %02x when fetching IRQ routing table.\n", (ret >> 8) & 0xff);
90 diff -urN linux-2.4.24/arch/i386/kernel/process.c linux-2.4.24-new/arch/i386/kernel/process.c
91 --- linux-2.4.24/arch/i386/kernel/process.c     2003-11-28 11:26:19.000000000 -0700
92 +++ linux-2.4.24-new/arch/i386/kernel/process.c 2004-05-04 12:20:40.585841568 -0700
93 @@ -687,7 +687,7 @@
94   * More important, however, is the fact that this allows us much
95   * more flexibility.
96   */
97 -void __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
98 +void fastcall __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
99  {
100         struct thread_struct *prev = &prev_p->thread,
101                                  *next = &next_p->thread;
102 diff -urN linux-2.4.24/arch/i386/kernel/signal.c linux-2.4.24-new/arch/i386/kernel/signal.c
103 --- linux-2.4.24/arch/i386/kernel/signal.c      2002-08-02 17:39:42.000000000 -0700
104 +++ linux-2.4.24-new/arch/i386/kernel/signal.c  2004-05-04 12:20:40.585841568 -0700
105 @@ -581,7 +581,7 @@
106   * want to handle. Thus you cannot kill init even with a SIGKILL even by
107   * mistake.
108   */
109 -int do_signal(struct pt_regs *regs, sigset_t *oldset)
110 +int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset)
111  {
112         siginfo_t info;
113         struct k_sigaction *ka;
114 diff -urN linux-2.4.24/arch/i386/kernel/smp.c linux-2.4.24-new/arch/i386/kernel/smp.c
115 --- linux-2.4.24/arch/i386/kernel/smp.c 2003-06-13 07:51:29.000000000 -0700
116 +++ linux-2.4.24-new/arch/i386/kernel/smp.c     2004-05-04 12:20:40.586841416 -0700
117 @@ -150,7 +150,7 @@
118         apic_write_around(APIC_ICR, cfg);
119  }
120  
121 -void send_IPI_self(int vector)
122 +void fastcall send_IPI_self(int vector)
123  {
124         __send_IPI_shortcut(APIC_DEST_SELF, vector);
125  }
126 diff -urN linux-2.4.24/arch/i386/kernel/vm86.c linux-2.4.24-new/arch/i386/kernel/vm86.c
127 --- linux-2.4.24/arch/i386/kernel/vm86.c        2003-08-25 04:44:39.000000000 -0700
128 +++ linux-2.4.24-new/arch/i386/kernel/vm86.c    2004-05-04 12:20:40.586841416 -0700
129 @@ -91,7 +91,7 @@
130  #define VM86_REGS_SIZE2 (sizeof(struct kernel_vm86_regs) - VM86_REGS_SIZE1)
131  
132  struct pt_regs * FASTCALL(save_v86_state(struct kernel_vm86_regs * regs));
133 -struct pt_regs * save_v86_state(struct kernel_vm86_regs * regs)
134 +struct pt_regs * fastcall save_v86_state(struct kernel_vm86_regs * regs)
135  {
136         struct tss_struct *tss;
137         struct pt_regs *ret;
138 diff -urN linux-2.4.24/arch/ppc/kernel/ppc_htab.c linux-2.4.24-new/arch/ppc/kernel/ppc_htab.c
139 --- linux-2.4.24/arch/ppc/kernel/ppc_htab.c     2003-11-28 11:26:19.000000000 -0700
140 +++ linux-2.4.24-new/arch/ppc/kernel/ppc_htab.c 2004-05-04 12:20:40.586841416 -0700
141 @@ -488,7 +488,7 @@
142                                 if (!isspace(c))
143                                         break;
144                                 left--;
145 -                               ((char *) buffer)++;
146 +                               buffer++;
147                         }
148                         if (!left)
149                                 break;
150 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
151 --- linux-2.4.24/arch/x86_64/boot/compressed/misc.c     2003-06-13 07:51:32.000000000 -0700
152 +++ linux-2.4.24-new/arch/x86_64/boot/compressed/misc.c 2004-05-04 12:20:40.587841264 -0700
153 @@ -96,7 +96,7 @@
154  static void gzip_mark(void **);
155  static void gzip_release(void **);
156   
157 -static void puts(const char *);
158 +static void putstr(const char *);
159    
160  extern int end;
161  static long free_mem_ptr = (long)&end;
162 @@ -157,7 +157,7 @@
163                 vidmem[i] = ' ';
164  }
165  
166 -static void puts(const char *s)
167 +static void putstr(const char *s)
168  {
169         int x,y,pos;
170         char c;
171 @@ -275,9 +275,9 @@
172  
173  static void error(char *x)
174  {
175 -       puts("\n\n");
176 -       puts(x);
177 -       puts("\n\n -- System halted");
178 +       putstr("\n\n");
179 +       putstr(x);
180 +       putstr("\n\n -- System halted");
181  
182         while(1);
183  }
184 @@ -351,9 +351,9 @@
185         else setup_output_buffer_if_we_run_high(mv);
186  
187         makecrc();
188 -       puts(".\nDecompressing Linux...");
189 +       putstr(".\nDecompressing Linux...");
190         gunzip();
191 -       puts("done.\nBooting the kernel.\n");
192 +       putstr("done.\nBooting the kernel.\n");
193         if (high_loaded) close_output_buffer_if_we_run_high(mv);
194         return high_loaded;
195  }
196 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
197 --- linux-2.4.24/arch/x86_64/ia32/ia32_ioctl.c  2003-11-28 11:26:19.000000000 -0700
198 +++ linux-2.4.24-new/arch/x86_64/ia32/ia32_ioctl.c      2004-05-04 12:20:40.589840960 -0700
199 @@ -1164,6 +1164,7 @@
200                 case FDDEFPRM32:
201                 case FDGETPRM32:
202                 {
203 +                       u32 name;
204                         struct floppy_struct *f;
205  
206                         f = karg = kmalloc(sizeof(struct floppy_struct), GFP_KERNEL);
207 @@ -1180,7 +1181,8 @@
208                         err |= __get_user(f->rate, &((struct floppy_struct32 *)arg)->rate);
209                         err |= __get_user(f->spec1, &((struct floppy_struct32 *)arg)->spec1);
210                         err |= __get_user(f->fmt_gap, &((struct floppy_struct32 *)arg)->fmt_gap);
211 -                       err |= __get_user((u64)f->name, &((struct floppy_struct32 *)arg)->name);
212 +                       err |= __get_user(name, &((struct floppy_struct32 *)arg)->name);
213 +                       f->name = (void*)(u64)name;
214                         if (err) {
215                                 err = -EFAULT;
216                                 goto out;
217 @@ -2708,20 +2710,23 @@
218  {
219         struct blkpg_ioctl_arg a;
220         struct blkpg_partition p;
221 +       struct blkpg_partition *up32;
222 +       u32 udata;
223         int err;
224         mm_segment_t old_fs = get_fs();
225  
226         err = get_user(a.op, &arg->op);
227         err |= __get_user(a.flags, &arg->flags);
228         err |= __get_user(a.datalen, &arg->datalen);
229 -       err |= __get_user((long)a.data, &arg->data);
230 +       err |= __get_user(udata, &arg->data);
231 +       up32 = (void*)(u64)udata;
232         if (err) return err;
233         switch (a.op) {
234         case BLKPG_ADD_PARTITION:
235         case BLKPG_DEL_PARTITION:
236                 if (a.datalen < sizeof(struct blkpg_partition))
237                         return -EINVAL;
238 -                if (copy_from_user(&p, a.data, sizeof(struct blkpg_partition)))
239 +                if (copy_from_user(&p, up32, sizeof(struct blkpg_partition)))
240                         return -EFAULT;
241                 a.data = &p;
242                 set_fs (KERNEL_DS);
243 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
244 --- linux-2.4.24/arch/x86_64/ia32/sys_ia32.c    2003-11-28 11:26:19.000000000 -0700
245 +++ linux-2.4.24-new/arch/x86_64/ia32/sys_ia32.c        2004-05-04 12:20:40.590840808 -0700
246 @@ -381,12 +381,16 @@
247                 return -EINVAL;
248  
249         if (act) {
250 +               u32 handler, restorer;
251 +
252                 if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
253 -                   __get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
254 +                   __get_user(handler, &act->sa_handler) ||
255                     __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
256 -                   __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer)||
257 +                   __get_user(restorer, &act->sa_restorer)||
258                     __copy_from_user(&set32, &act->sa_mask, sizeof(sigset32_t)))
259                         return -EFAULT;
260 +               new_ka.sa.sa_handler = (void*)(u64)handler;
261 +               new_ka.sa.sa_restorer = (void*)(u64)restorer;
262  
263                 /* FIXME: here we rely on _IA32_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
264                 switch (_NSIG_WORDS) {
265 @@ -438,13 +442,16 @@
266  
267          if (act) {
268                 old_sigset32_t mask;
269 +               u32 handler, restorer;
270  
271                 if (verify_area(VERIFY_READ, act, sizeof(*act)) ||
272 -                   __get_user((long)new_ka.sa.sa_handler, &act->sa_handler) ||
273 +                   __get_user(handler, &act->sa_handler) ||
274                     __get_user(new_ka.sa.sa_flags, &act->sa_flags) ||
275 -                   __get_user((long)new_ka.sa.sa_restorer, &act->sa_restorer) ||
276 +                   __get_user(restorer, &act->sa_restorer) ||
277                     __get_user(mask, &act->sa_mask))
278                         return -EFAULT;
279 +               new_ka.sa.sa_handler = (void*)(u64)handler;
280 +               new_ka.sa.sa_restorer = (void*)(u64)restorer;
281                 siginitset(&new_ka.sa.sa_mask, mask);
282          }
283  
284 @@ -775,7 +782,7 @@
285         put_user(reclen, &dirent->d_reclen);
286         copy_to_user(dirent->d_name, name, namlen);
287         put_user(0, dirent->d_name + namlen);
288 -       ((char *) dirent) += reclen;
289 +       dirent = (void*)dirent + reclen;
290         buf->current_dir = dirent;
291         buf->count -= reclen;
292         return 0;
293 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
294 --- linux-2.4.24/arch/x86_64/kernel/x8664_ksyms.c       2003-11-28 11:26:19.000000000 -0700
295 +++ linux-2.4.24-new/arch/x86_64/kernel/x8664_ksyms.c   2004-05-04 12:20:40.591840656 -0700
296 @@ -155,7 +155,7 @@
297  extern __kernel_size_t strlen(const char *);
298  extern int strcmp(const char *,const char *);
299  extern char * strcpy(char *,const char *);
300 -extern char * bcopy(const char * src, char * dest, int count);
301 +extern void bcopy(const void * src, void * dest, size_t count);
302  
303  EXPORT_SYMBOL_NOVERS(memcpy);
304  EXPORT_SYMBOL_NOVERS(__memcpy);
305 diff -urN linux-2.4.24/arch/x86_64/lib/usercopy.c linux-2.4.24-new/arch/x86_64/lib/usercopy.c
306 --- linux-2.4.24/arch/x86_64/lib/usercopy.c     2003-11-28 11:26:19.000000000 -0700
307 +++ linux-2.4.24-new/arch/x86_64/lib/usercopy.c 2004-05-04 12:20:40.591840656 -0700
308 @@ -88,7 +88,7 @@
309                 "       .quad 1b,2b\n"
310                 ".previous"
311                 : [size8] "=c"(size), [dst] "=&D" (__d0)
312 -               : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst] "(addr),
313 +               : [size1] "r"(size & 7), "[size8]" (size / 8), "[dst]"(addr),
314                   [zero] "r" (0UL), [eight] "r" (8UL));
315         return size;
316  }
317 diff -urN linux-2.4.24/drivers/char/drm/drm_dma.h linux-2.4.24-new/drivers/char/drm/drm_dma.h
318 --- linux-2.4.24/drivers/char/drm/drm_dma.h     2003-11-28 11:26:20.000000000 -0700
319 +++ linux-2.4.24-new/drivers/char/drm/drm_dma.h 2004-05-04 12:20:40.592840504 -0700
320 @@ -648,7 +648,7 @@
321                  * for the same vblank sequence number; nothing to be done in
322                  * that case
323                  */
324 -               list_for_each( ( (struct list_head *) vbl_sig ), &dev->vbl_sigs.head ) {
325 +               list_for_each_entry( vbl_sig, &dev->vbl_sigs.head, head ) {
326                         if (vbl_sig->sequence == vblwait.request.sequence
327                             && vbl_sig->info.si_signo == vblwait.request.signal
328                             && vbl_sig->task == current)
329 @@ -699,19 +699,20 @@
330  
331  void DRM(vbl_send_signals)( drm_device_t *dev )
332  {
333 -       struct list_head *tmp;
334 +       struct list_head *list, *tmp;
335         drm_vbl_sig_t *vbl_sig;
336         unsigned int vbl_seq = atomic_read( &dev->vbl_received );
337         unsigned long flags;
338  
339         spin_lock_irqsave( &dev->vbl_lock, flags );
340  
341 -       list_for_each_safe( ( (struct list_head *) vbl_sig ), tmp, &dev->vbl_sigs.head ) {
342 +       list_for_each_safe( list, tmp, &dev->vbl_sigs.head ) {
343 +               vbl_sig = list_entry( list, drm_vbl_sig_t, head );
344                 if ( ( vbl_seq - vbl_sig->sequence ) <= (1<<23) ) {
345                         vbl_sig->info.si_code = vbl_seq;
346                         send_sig_info( vbl_sig->info.si_signo, &vbl_sig->info, vbl_sig->task );
347  
348 -                       list_del( (struct list_head *) vbl_sig );
349 +                       list_del( list );
350  
351  
352                         kfree( vbl_sig );
353 diff -urN linux-2.4.24/drivers/char/drm/radeon_state.c linux-2.4.24-new/drivers/char/drm/radeon_state.c
354 --- linux-2.4.24/drivers/char/drm/radeon_state.c        2003-11-28 11:26:20.000000000 -0700
355 +++ linux-2.4.24-new/drivers/char/drm/radeon_state.c    2004-05-04 12:20:40.593840352 -0700
356 @@ -1223,7 +1223,7 @@
357                 /* Update the input parameters for next time */
358                 image->y += height;
359                 image->height -= height;
360 -               (const u8 *)image->data += size;
361 +               image->data = (const u8 *)image->data + size;
362         } while (image->height > 0);
363  
364         /* Flush the pixel cache after the blit completes.  This ensures
365 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
366 --- linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.c        2000-10-16 12:58:51.000000000 -0700
367 +++ linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.c    2004-05-04 12:20:40.593840352 -0700
368 @@ -203,6 +203,7 @@
369             ft_format_code == fmt_1100ft) {
370                 SectorCount *ptr = (SectorCount *)bad_sector_map;
371                 unsigned int sector;
372 +               __u16 *ptr16;
373  
374                 while((sector = get_sector(ptr++)) != 0) {
375                         if ((ft_format_code == fmt_big || 
376 @@ -218,9 +219,10 @@
377                 }
378                 /*  Display old ftape's end-of-file marks
379                  */
380 -               while ((sector = get_unaligned(((__u16*)ptr)++)) != 0) {
381 +               ptr16 = (__u16*)ptr;
382 +               while ((sector = get_unaligned(ptr16++)) != 0) {
383                         TRACE(ft_t_noise, "Old ftape eof mark: %4d/%2d",
384 -                             sector, get_unaligned(((__u16*)ptr)++));
385 +                             sector, get_unaligned(ptr16++));
386                 }
387         } else { /* fixed size format */
388                 for (i = ft_first_data_segment;
389 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
390 --- linux-2.4.24/drivers/char/ftape/lowlevel/ftape-bsm.h        1997-11-25 15:45:27.000000000 -0700
391 +++ linux-2.4.24-new/drivers/char/ftape/lowlevel/ftape-bsm.h    2004-05-04 12:20:40.593840352 -0700
392 @@ -47,7 +47,7 @@
393   */
394  typedef struct NewSectorMap {          
395         __u8 bytes[3];
396 -} SectorCount __attribute__((packed));
397 +} SectorCount;
398  
399  
400  /*
401 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
402 --- linux-2.4.24/drivers/char/ftape/zftape/zftape-eof.c 1999-11-23 11:29:15.000000000 -0700
403 +++ linux-2.4.24-new/drivers/char/ftape/zftape/zftape-eof.c     2004-05-04 12:20:40.593840352 -0700
404 @@ -123,7 +123,7 @@
405         while (ptr + 3 < limit) {
406  
407                 if (get_unaligned((__u32*)ptr)) {
408 -                       ++(__u32*)ptr;
409 +                       ptr += sizeof(__u32);
410                 } else {
411                         return ptr;
412                 }
413 diff -urN linux-2.4.24/drivers/parport/parport_pc.c linux-2.4.24-new/drivers/parport/parport_pc.c
414 --- linux-2.4.24/drivers/parport/parport_pc.c   2003-06-13 07:51:35.000000000 -0700
415 +++ linux-2.4.24-new/drivers/parport/parport_pc.c       2004-05-04 12:20:40.594840200 -0700
416 @@ -414,7 +414,8 @@
417                                 left -= 16;
418                         } else {
419                                 /* grab single byte from the warp fifo */
420 -                               *((char *)buf)++ = inb (EPPDATA (port));
421 +                               *((char *)buf) = inb (EPPDATA (port));
422 +                               buf++;
423                                 got++;
424                                 left--;
425                         }
426 @@ -441,7 +442,8 @@
427                 return length;
428         }
429         for (; got < length; got++) {
430 -               *((char*)buf)++ = inb (EPPDATA(port));
431 +               *((char*)buf) = inb (EPPDATA(port));
432 +               buf++;
433                 if (inb (STATUS (port)) & 0x01) {
434                         /* EPP timeout */
435                         clear_epp_timeout (port);
436 @@ -470,7 +472,8 @@
437                 return length;
438         }
439         for (; written < length; written++) {
440 -               outb (*((char*)buf)++, EPPDATA(port));
441 +               outb (*((char*)buf), EPPDATA(port));
442 +               buf++;
443                 if (inb (STATUS(port)) & 0x01) {
444                         clear_epp_timeout (port);
445                         break;
446 @@ -494,7 +497,8 @@
447                 return length;
448         }
449         for (; got < length; got++) {
450 -               *((char*)buf)++ = inb (EPPADDR (port));
451 +               *((char*)buf) = inb (EPPADDR (port));
452 +               buf++;
453                 if (inb (STATUS (port)) & 0x01) {
454                         clear_epp_timeout (port);
455                         break;
456 @@ -519,7 +523,8 @@
457                 return length;
458         }
459         for (; written < length; written++) {
460 -               outb (*((char*)buf)++, EPPADDR (port));
461 +               outb (*((char*)buf), EPPADDR (port));
462 +               buf++;
463                 if (inb (STATUS (port)) & 0x01) {
464                         clear_epp_timeout (port);
465                         break;
466 diff -urN linux-2.4.24/drivers/pcmcia/bulkmem.c linux-2.4.24-new/drivers/pcmcia/bulkmem.c
467 --- linux-2.4.24/drivers/pcmcia/bulkmem.c       2002-11-28 16:53:14.000000000 -0700
468 +++ linux-2.4.24-new/drivers/pcmcia/bulkmem.c   2004-05-04 12:20:40.595840048 -0700
469 @@ -301,7 +301,7 @@
470      {
471         window_handle_t w;
472          int ret = pcmcia_request_window(a1, a2, &w);
473 -        (window_handle_t *)a1 = w;
474 +        a1 = w;
475         return  ret;
476      }
477          break;
478 diff -urN linux-2.4.24/drivers/usb/hid-core.c linux-2.4.24-new/drivers/usb/hid-core.c
479 --- linux-2.4.24/drivers/usb/hid-core.c 2003-08-25 04:44:42.000000000 -0700
480 +++ linux-2.4.24-new/drivers/usb/hid-core.c     2004-05-04 12:20:40.595840048 -0700
481 @@ -613,14 +613,16 @@
482  
483                                 case 2:
484                                         if ((end - start) >= 2) {
485 -                                               item->data.u16 = le16_to_cpu( get_unaligned(((__u16*)start)++));
486 +                                               item->data.u16 = le16_to_cpu(get_unaligned((__u16*)start));
487 +                                               start = (__u8 *)((__u16 *)start + 1);
488                                                 return start;
489                                         }
490  
491                                 case 3:
492                                         item->size++;
493                                         if ((end - start) >= 4) {
494 -                                               item->data.u32 = le32_to_cpu( get_unaligned(((__u32*)start)++));
495 +                                               item->data.u32 = le32_to_cpu(get_unaligned((__u32*)start));
496 +                                               start = (__u8 *)((__u32 *)start + 1);
497                                                 return start;
498                                         }
499                         }
500 diff -urN linux-2.4.24/drivers/video/fbcon.c linux-2.4.24-new/drivers/video/fbcon.c
501 --- linux-2.4.24/drivers/video/fbcon.c  2003-08-25 04:44:42.000000000 -0700
502 +++ linux-2.4.24-new/drivers/video/fbcon.c      2004-05-04 12:20:40.597839744 -0700
503 @@ -1877,7 +1877,10 @@
504         font length must be multiple of 256, at least. And 256 is multiple
505         of 4 */
506      k = 0;
507 -    while (p > new_data) k += *--(u32 *)p;
508 +    while (p > new_data) {
509 +           p = (u8 *)((u32 *)p - 1);
510 +           k += *(u32 *) p;
511 +    }
512      FNTSUM(new_data) = k;
513      /* Check if the same font is on some other console already */
514      for (i = 0; i < MAX_NR_CONSOLES; i++) {
515 diff -urN linux-2.4.24/fs/buffer.c linux-2.4.24-new/fs/buffer.c
516 --- linux-2.4.24/fs/buffer.c    2003-11-28 11:26:21.000000000 -0700
517 +++ linux-2.4.24-new/fs/buffer.c        2004-05-04 12:20:40.598839592 -0700
518 @@ -130,7 +130,7 @@
519  int bdflush_min[N_PARAM] = {  0,  1,    0,   0,  0,   1*HZ,   0, 0, 0};
520  int bdflush_max[N_PARAM] = {100,50000, 20000, 20000,10000*HZ, 10000*HZ, 100, 100, 0};
521  
522 -void unlock_buffer(struct buffer_head *bh)
523 +void fastcall unlock_buffer(struct buffer_head *bh)
524  {
525         clear_bit(BH_Wait_IO, &bh->b_state);
526         clear_bit(BH_Launder, &bh->b_state);
527 @@ -613,7 +613,7 @@
528         return bh;
529  }
530  
531 -void buffer_insert_list(struct buffer_head *bh, struct list_head *list)
532 +void fastcall buffer_insert_list(struct buffer_head *bh, struct list_head *list)
533  {
534         spin_lock(&lru_list_lock);
535         if (buffer_attached(bh))
536 @@ -1056,7 +1056,7 @@
537  }
538  EXPORT_SYMBOL(balance_dirty);
539  
540 -inline void __mark_dirty(struct buffer_head *bh)
541 +inline void fastcall __mark_dirty(struct buffer_head *bh)
542  {
543         bh->b_flushtime = jiffies + bdf_prm.b_un.age_buffer;
544         refile_buffer(bh);
545 @@ -1064,13 +1064,13 @@
546  
547  /* atomic version, the user must call balance_dirty() by hand
548     as soon as it become possible to block */
549 -void __mark_buffer_dirty(struct buffer_head *bh)
550 +void fastcall __mark_buffer_dirty(struct buffer_head *bh)
551  {
552         if (!atomic_set_buffer_dirty(bh))
553                 __mark_dirty(bh);
554  }
555  
556 -void mark_buffer_dirty(struct buffer_head *bh)
557 +void fastcall mark_buffer_dirty(struct buffer_head *bh)
558  {
559         if (!atomic_set_buffer_dirty(bh)) {
560                 if (block_dump)
561 @@ -2693,7 +2693,7 @@
562   *       obtain a reference to a buffer head within a page.  So we must
563   *      lock out all of these paths to cleanly toss the page.
564   */
565 -int try_to_free_buffers(struct page * page, unsigned int gfp_mask)
566 +int fastcall try_to_free_buffers(struct page * page, unsigned int gfp_mask)
567  {
568         struct buffer_head * tmp, * bh = page->buffers;
569  
570 diff -urN linux-2.4.24/fs/file_table.c linux-2.4.24-new/fs/file_table.c
571 --- linux-2.4.24/fs/file_table.c        2002-11-28 16:53:15.000000000 -0700
572 +++ linux-2.4.24-new/fs/file_table.c    2004-05-04 12:20:40.598839592 -0700
573 @@ -97,7 +97,7 @@
574                 return 0;
575  }
576  
577 -void fput(struct file * file)
578 +void fastcall fput(struct file * file)
579  {
580         struct dentry * dentry = file->f_dentry;
581         struct vfsmount * mnt = file->f_vfsmnt;
582 @@ -126,7 +126,7 @@
583         }
584  }
585  
586 -struct file * fget(unsigned int fd)
587 +struct file * fastcall fget(unsigned int fd)
588  {
589         struct file * file;
590         struct files_struct *files = current->files;
591 diff -urN linux-2.4.24/fs/namei.c linux-2.4.24-new/fs/namei.c
592 --- linux-2.4.24/fs/namei.c     2003-08-25 04:44:43.000000000 -0700
593 +++ linux-2.4.24-new/fs/namei.c 2004-05-04 12:20:40.599839440 -0700
594 @@ -447,7 +447,7 @@
595   *
596   * We expect 'base' to be positive and a directory.
597   */
598 -int link_path_walk(const char * name, struct nameidata *nd)
599 +int fastcall link_path_walk(const char * name, struct nameidata *nd)
600  {
601         struct dentry *dentry;
602         struct inode *inode;
603 @@ -653,7 +653,7 @@
604         return err;
605  }
606  
607 -int path_walk(const char * name, struct nameidata *nd)
608 +int fastcall path_walk(const char * name, struct nameidata *nd)
609  {
610         current->total_link_count = 0;
611         return link_path_walk(name, nd);
612 @@ -741,7 +741,7 @@
613  }
614  
615  /* SMP-safe */
616 -int path_lookup(const char *path, unsigned flags, struct nameidata *nd)
617 +int fastcall path_lookup(const char *path, unsigned flags, struct nameidata *nd)
618  {
619         int error = 0;
620         if (path_init(path, flags, nd))
621 @@ -751,7 +751,7 @@
622  
623  
624  /* SMP-safe */
625 -int path_init(const char *name, unsigned int flags, struct nameidata *nd)
626 +int fastcall path_init(const char *name, unsigned int flags, struct nameidata *nd)
627  {
628         nd->last_type = LAST_ROOT; /* if there are only slashes... */
629         nd->flags = flags;
630 @@ -847,7 +847,7 @@
631   * that namei follows links, while lnamei does not.
632   * SMP-safe
633   */
634 -int __user_walk(const char *name, unsigned flags, struct nameidata *nd)
635 +int fastcall __user_walk(const char *name, unsigned flags, struct nameidata *nd)
636  {
637         char *tmp;
638         int err;
639 diff -urN linux-2.4.24/fs/readdir.c linux-2.4.24-new/fs/readdir.c
640 --- linux-2.4.24/fs/readdir.c   2002-08-02 17:39:45.000000000 -0700
641 +++ linux-2.4.24-new/fs/readdir.c       2004-05-04 12:20:40.599839440 -0700
642 @@ -263,7 +263,7 @@
643         put_user(reclen, &dirent->d_reclen);
644         copy_to_user(dirent->d_name, name, namlen);
645         put_user(0, dirent->d_name + namlen);
646 -       ((char *) dirent) += reclen;
647 +       dirent = (void*)dirent + reclen;
648         buf->current_dir = dirent;
649         buf->count -= reclen;
650         return 0;
651 @@ -346,7 +346,7 @@
652         copy_to_user(dirent, &d, NAME_OFFSET(&d));
653         copy_to_user(dirent->d_name, name, namlen);
654         put_user(0, dirent->d_name + namlen);
655 -       ((char *) dirent) += reclen;
656 +       dirent = (void*)dirent + reclen;
657         buf->current_dir = dirent;
658         buf->count -= reclen;
659         return 0;
660 diff -urN linux-2.4.24/include/asm-i386/apic.h linux-2.4.24-new/include/asm-i386/apic.h
661 --- linux-2.4.24/include/asm-i386/apic.h        2002-08-02 17:39:45.000000000 -0700
662 +++ linux-2.4.24-new/include/asm-i386/apic.h    2004-05-04 12:25:47.385200976 -0700
663 @@ -77,7 +77,7 @@
664  extern void smp_local_timer_interrupt (struct pt_regs * regs);
665  extern void setup_APIC_clocks (void);
666  extern void setup_apic_nmi_watchdog (void);
667 -extern inline void nmi_watchdog_tick (struct pt_regs * regs);
668 +extern void nmi_watchdog_tick (struct pt_regs * regs);
669  extern int APIC_init_uniprocessor (void);
670  extern void disable_APIC_timer(void);
671  extern void enable_APIC_timer(void);
672 diff -urN linux-2.4.24/include/asm-i386/rwsem.h linux-2.4.24-new/include/asm-i386/rwsem.h
673 --- linux-2.4.24/include/asm-i386/rwsem.h       2002-11-28 16:53:15.000000000 -0700
674 +++ linux-2.4.24-new/include/asm-i386/rwsem.h   2004-05-04 12:25:47.337208272 -0700
675 @@ -113,8 +113,8 @@
676                 "  jmp       1b\n"
677                 LOCK_SECTION_END
678                 "# ending down_read\n\t"
679 -               : "+m"(sem->count)
680 -               : "a"(sem)
681 +               : "=m"(sem->count)
682 +               : "a"(sem), "m"(sem->count)
683                 : "memory", "cc");
684  }
685  
686 @@ -151,8 +151,8 @@
687         tmp = RWSEM_ACTIVE_WRITE_BIAS;
688         __asm__ __volatile__(
689                 "# beginning down_write\n\t"
690 -LOCK_PREFIX    "  xadd      %0,(%%eax)\n\t" /* subtract 0x0000ffff, returns the old value */
691 -               "  testl     %0,%0\n\t" /* was the count 0 before? */
692 +LOCK_PREFIX    "  xadd      %%edx,(%%eax)\n\t" /* subtract 0x0000ffff, returns the old value */
693 +               "  testl     %%edx,%%edx\n\t" /* was the count 0 before? */
694                 "  jnz       2f\n\t" /* jump if we weren't granted the lock */
695                 "1:\n\t"
696                 LOCK_SECTION_START("")
697 @@ -163,8 +163,8 @@
698                 "  jmp       1b\n"
699                 LOCK_SECTION_END
700                 "# ending down_write"
701 -               : "+d"(tmp), "+m"(sem->count)
702 -               : "a"(sem)
703 +               : "=m"(sem->count), "=d"(tmp)
704 +               : "a"(sem), "1"(tmp), "m"(sem->count)
705                 : "memory", "cc");
706  }
707  
708 @@ -202,8 +202,8 @@
709                 "  jmp       1b\n"
710                 LOCK_SECTION_END
711                 "# ending __up_read\n"
712 -               : "+m"(sem->count), "+d"(tmp)
713 -               : "a"(sem)
714 +               : "=m"(sem->count), "=d"(tmp)
715 +               : "a"(sem), "1"(tmp), "m"(sem->count)
716                 : "memory", "cc");
717  }
718  
719 @@ -228,8 +228,8 @@
720                 "  jmp       1b\n"
721                 LOCK_SECTION_END
722                 "# ending __up_write\n"
723 -               : "+m"(sem->count)
724 -               : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS)
725 +               : "=m"(sem->count)
726 +               : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS), "m"(sem->count)
727                 : "memory", "cc", "edx");
728  }
729  
730 diff -urN linux-2.4.24/include/asm-i386/unistd.h linux-2.4.24-new/include/asm-i386/unistd.h
731 --- linux-2.4.24/include/asm-i386/unistd.h      2002-11-28 16:53:15.000000000 -0700
732 +++ linux-2.4.24-new/include/asm-i386/unistd.h  2004-05-04 12:20:40.600839288 -0700
733 @@ -372,7 +372,7 @@
734  static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
735  static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
736  static inline _syscall1(int,close,int,fd)
737 -static inline _syscall1(int,_exit,int,exitcode)
738 +static inline _syscall1(void,_exit,int,exitcode)
739  static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
740  static inline _syscall1(int,delete_module,const char *,name)
741  
742 diff -urN linux-2.4.24/include/asm-ppc/unistd.h linux-2.4.24-new/include/asm-ppc/unistd.h
743 --- linux-2.4.24/include/asm-ppc/unistd.h       2003-11-28 11:26:21.000000000 -0700
744 +++ linux-2.4.24-new/include/asm-ppc/unistd.h   2004-05-04 12:20:40.600839288 -0700
745 @@ -382,7 +382,7 @@
746  static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
747  static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
748  static inline _syscall1(int,close,int,fd)
749 -static inline _syscall1(int,_exit,int,exitcode)
750 +static inline _syscall1(void,_exit,int,exitcode)
751  static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
752  static inline _syscall1(int,delete_module,const char *,name)
753  
754 diff -urN linux-2.4.24/include/asm-x86_64/unistd.h linux-2.4.24-new/include/asm-x86_64/unistd.h
755 --- linux-2.4.24/include/asm-x86_64/unistd.h    2003-11-28 11:26:21.000000000 -0700
756 +++ linux-2.4.24-new/include/asm-x86_64/unistd.h        2004-05-04 12:20:40.601839136 -0700
757 @@ -673,7 +673,7 @@
758  }
759  
760  extern long sys_exit(int) __attribute__((noreturn));
761 -extern inline long exit(int error_code)
762 +static inline void exit(int error_code)
763  {
764         sys_exit(error_code);
765  }
766 diff -urN linux-2.4.24/include/linux/blkdev.h linux-2.4.24-new/include/linux/blkdev.h
767 --- linux-2.4.24/include/linux/blkdev.h 2003-08-25 04:44:44.000000000 -0700
768 +++ linux-2.4.24-new/include/linux/blkdev.h     2004-05-04 12:25:47.425194896 -0700
769 @@ -233,7 +233,7 @@
770  extern void grok_partitions(struct gendisk *dev, int drive, unsigned minors, long size);
771  extern void register_disk(struct gendisk *dev, kdev_t first, unsigned minors, struct block_device_operations *ops, long size);
772  extern void generic_make_request(int rw, struct buffer_head * bh);
773 -extern inline request_queue_t *blk_get_queue(kdev_t dev);
774 +extern request_queue_t *blk_get_queue(kdev_t dev);
775  extern void blkdev_release_request(struct request *);
776  
777  /*
778 diff -urN linux-2.4.24/include/linux/compiler.h linux-2.4.24-new/include/linux/compiler.h
779 --- linux-2.4.24/include/linux/compiler.h       2001-09-18 14:12:45.000000000 -0700
780 +++ linux-2.4.24-new/include/linux/compiler.h   2004-05-04 12:25:41.704064640 -0700
781 @@ -13,4 +13,12 @@
782  #define likely(x)      __builtin_expect((x),1)
783  #define unlikely(x)    __builtin_expect((x),0)
784  
785 +#if __GNUC__ == 3
786 +#if __GNUC_MINOR__ >= 1 && __GNUC_MINOR__ < 4
787 +# define inline         __inline__ __attribute__((always_inline))
788 +# define __inline__     __inline__ __attribute__((always_inline))
789 +# define __inline       __inline__ __attribute__((always_inline))
790 +#endif
791 +#endif /* __GNUC__ */
792 +
793  #endif /* __LINUX_COMPILER_H */
794 diff -urN linux-2.4.24/include/linux/ide.h linux-2.4.24-new/include/linux/ide.h
795 --- linux-2.4.24/include/linux/ide.h    2003-11-28 11:26:21.000000000 -0700
796 +++ linux-2.4.24-new/include/linux/ide.h        2004-05-04 12:26:04.153651784 -0700
797 @@ -1446,10 +1446,10 @@
798         void                    *special;
799  } pkt_task_t;
800  
801 -extern inline void SELECT_DRIVE(ide_drive_t *);
802 -extern inline void SELECT_INTERRUPT(ide_drive_t *);
803 -extern inline void SELECT_MASK(ide_drive_t *, int);
804 -extern inline void QUIRK_LIST(ide_drive_t *);
805 +extern void SELECT_DRIVE(ide_drive_t *);
806 +extern void SELECT_INTERRUPT(ide_drive_t *);
807 +extern void SELECT_MASK(ide_drive_t *, int);
808 +extern void QUIRK_LIST(ide_drive_t *);
809  
810  extern void ata_input_data(ide_drive_t *, void *, u32);
811  extern void ata_output_data(ide_drive_t *, void *, u32);
812 diff -urN linux-2.4.24/include/linux/irq_cpustat.h linux-2.4.24-new/include/linux/irq_cpustat.h
813 --- linux-2.4.24/include/linux/irq_cpustat.h    2001-11-22 12:46:18.000000000 -0700
814 +++ linux-2.4.24-new/include/linux/irq_cpustat.h        2004-05-04 12:25:47.413196720 -0700
815 @@ -22,7 +22,7 @@
816  #ifdef CONFIG_SMP
817  #define __IRQ_STAT(cpu, member)        (irq_stat[cpu].member)
818  #else
819 -#define __IRQ_STAT(cpu, member)        ((void)(cpu), irq_stat[0].member)
820 +#define __IRQ_STAT(cpu, member)        (irq_stat[((void)(cpu), 0)].member)
821  #endif 
822  
823    /* arch independent irq_stat fields */
824 diff -urN linux-2.4.24/include/linux/kernel.h linux-2.4.24-new/include/linux/kernel.h
825 --- linux-2.4.24/include/linux/kernel.h 2002-11-28 16:53:15.000000000 -0700
826 +++ linux-2.4.24-new/include/linux/kernel.h     2004-05-04 12:25:47.305213136 -0700
827 @@ -51,8 +51,10 @@
828  
829  #ifdef __i386__
830  #define FASTCALL(x)    x __attribute__((regparm(3)))
831 +#define fastcall       __attribute__((regparm(3)))
832  #else
833  #define FASTCALL(x)    x
834 +#define fastcall
835  #endif
836  
837  struct completion;
838 diff -urN linux-2.4.24/include/linux/sched.h linux-2.4.24-new/include/linux/sched.h
839 --- linux-2.4.24/include/linux/sched.h  2003-11-28 11:26:21.000000000 -0700
840 +++ linux-2.4.24-new/include/linux/sched.h      2004-05-04 12:25:47.400198696 -0700
841 @@ -761,7 +761,7 @@
842  extern void end_lazy_tlb(struct mm_struct *mm);
843  
844  /* mmdrop drops the mm and the page tables */
845 -extern inline void FASTCALL(__mmdrop(struct mm_struct *));
846 +extern void FASTCALL(__mmdrop(struct mm_struct *));
847  static inline void mmdrop(struct mm_struct * mm)
848  {
849         if (atomic_dec_and_test(&mm->mm_count))
850 diff -urN linux-2.4.24/include/linux/smp.h linux-2.4.24-new/include/linux/smp.h
851 --- linux-2.4.24/include/linux/smp.h    2001-11-22 12:46:19.000000000 -0700
852 +++ linux-2.4.24-new/include/linux/smp.h        2004-05-04 12:25:47.387200672 -0700
853 @@ -26,7 +26,7 @@
854  /*
855   * sends a 'reschedule' event to another CPU:
856   */
857 -extern void FASTCALL(smp_send_reschedule(int cpu));
858 +extern void smp_send_reschedule(int cpu);
859  
860  
861  /*
862 diff -urN linux-2.4.24/include/net/ip.h linux-2.4.24-new/include/net/ip.h
863 --- linux-2.4.24/include/net/ip.h       2003-11-28 11:26:21.000000000 -0700
864 +++ linux-2.4.24-new/include/net/ip.h   2004-05-04 12:28:47.997743696 -0700
865 @@ -137,7 +137,7 @@
866  void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg,
867                    unsigned int len); 
868  
869 -extern __inline__ int ip_finish_output(struct sk_buff *skb);
870 +extern int ip_finish_output(struct sk_buff *skb);
871  
872  struct ipv4_config
873  {
874 diff -urN linux-2.4.24/kernel/fork.c linux-2.4.24-new/kernel/fork.c
875 --- linux-2.4.24/kernel/fork.c  2003-11-28 11:26:21.000000000 -0700
876 +++ linux-2.4.24-new/kernel/fork.c      2004-05-04 12:20:40.604838680 -0700
877 @@ -39,7 +39,7 @@
878  
879  struct task_struct *pidhash[PIDHASH_SZ];
880  
881 -void add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
882 +void fastcall add_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
883  {
884         unsigned long flags;
885  
886 @@ -49,7 +49,7 @@
887         wq_write_unlock_irqrestore(&q->lock, flags);
888  }
889  
890 -void add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)
891 +void fastcall add_wait_queue_exclusive(wait_queue_head_t *q, wait_queue_t * wait)
892  {
893         unsigned long flags;
894  
895 @@ -59,7 +59,7 @@
896         wq_write_unlock_irqrestore(&q->lock, flags);
897  }
898  
899 -void remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
900 +void fastcall remove_wait_queue(wait_queue_head_t *q, wait_queue_t * wait)
901  {
902         unsigned long flags;
903  
904 @@ -262,7 +262,7 @@
905   * is dropped: either by a lazy thread or by
906   * mmput. Free the page directory and the mm.
907   */
908 -inline void __mmdrop(struct mm_struct *mm)
909 +void fastcall __mmdrop(struct mm_struct *mm)
910  {
911         BUG_ON(mm == &init_mm);
912         pgd_free(mm->pgd);
913 diff -urN linux-2.4.24/kernel/sched.c linux-2.4.24-new/kernel/sched.c
914 --- linux-2.4.24/kernel/sched.c 2003-11-28 11:26:21.000000000 -0700
915 +++ linux-2.4.24-new/kernel/sched.c     2004-05-04 12:20:40.605838528 -0700
916 @@ -209,7 +209,7 @@
917   */
918  static FASTCALL(void reschedule_idle(struct task_struct * p));
919  
920 -static void reschedule_idle(struct task_struct * p)
921 +static void fastcall reschedule_idle(struct task_struct * p)
922  {
923  #ifdef CONFIG_SMP
924         int this_cpu = smp_processor_id();
925 @@ -367,7 +367,7 @@
926         return success;
927  }
928  
929 -inline int wake_up_process(struct task_struct * p)
930 +inline int fastcall wake_up_process(struct task_struct * p)
931  {
932         return try_to_wake_up(p, 0);
933  }
934 @@ -405,7 +405,7 @@
935   *
936   * In all cases the return value is guaranteed to be non-negative.
937   */
938 -signed long schedule_timeout(signed long timeout)
939 +signed long fastcall schedule_timeout(signed long timeout)
940  {
941         struct timer_list timer;
942         unsigned long expire;
943 @@ -735,7 +735,7 @@
944         }
945  }
946  
947 -void __wake_up(wait_queue_head_t *q, unsigned int mode, int nr)
948 +void fastcall __wake_up(wait_queue_head_t *q, unsigned int mode, int nr)
949  {
950         if (q) {
951                 unsigned long flags;
952 @@ -745,7 +745,7 @@
953         }
954  }
955  
956 -void __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr)
957 +void fastcall __wake_up_sync(wait_queue_head_t *q, unsigned int mode, int nr)
958  {
959         if (q) {
960                 unsigned long flags;
961 @@ -755,7 +755,7 @@
962         }
963  }
964  
965 -void complete(struct completion *x)
966 +void fastcall complete(struct completion *x)
967  {
968         unsigned long flags;
969  
970 @@ -765,7 +765,7 @@
971         spin_unlock_irqrestore(&x->wait.lock, flags);
972  }
973  
974 -void wait_for_completion(struct completion *x)
975 +void fastcall wait_for_completion(struct completion *x)
976  {
977         spin_lock_irq(&x->wait.lock);
978         if (!x->done) {
979 @@ -800,7 +800,7 @@
980         __remove_wait_queue(q, &wait);                          \
981         wq_write_unlock_irqrestore(&q->lock,flags);
982  
983 -void interruptible_sleep_on(wait_queue_head_t *q)
984 +void fastcall interruptible_sleep_on(wait_queue_head_t *q)
985  {
986         SLEEP_ON_VAR
987  
988 @@ -811,7 +811,7 @@
989         SLEEP_ON_TAIL
990  }
991  
992 -long interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
993 +long fastcall interruptible_sleep_on_timeout(wait_queue_head_t *q, long timeout)
994  {
995         SLEEP_ON_VAR
996  
997 @@ -824,7 +824,7 @@
998         return timeout;
999  }
1000  
1001 -void sleep_on(wait_queue_head_t *q)
1002 +void fastcall sleep_on(wait_queue_head_t *q)
1003  {
1004         SLEEP_ON_VAR
1005         
1006 @@ -835,7 +835,7 @@
1007         SLEEP_ON_TAIL
1008  }
1009  
1010 -long sleep_on_timeout(wait_queue_head_t *q, long timeout)
1011 +long fastcall sleep_on_timeout(wait_queue_head_t *q, long timeout)
1012  {
1013         SLEEP_ON_VAR
1014         
1015 diff -urN linux-2.4.24/kernel/softirq.c linux-2.4.24-new/kernel/softirq.c
1016 --- linux-2.4.24/kernel/softirq.c       2002-11-28 16:53:15.000000000 -0700
1017 +++ linux-2.4.24-new/kernel/softirq.c   2004-05-04 12:20:40.605838528 -0700
1018 @@ -111,7 +111,7 @@
1019  /*
1020   * This function must run with irq disabled!
1021   */
1022 -inline void cpu_raise_softirq(unsigned int cpu, unsigned int nr)
1023 +inline void fastcall cpu_raise_softirq(unsigned int cpu, unsigned int nr)
1024  {
1025         __cpu_raise_softirq(cpu, nr);
1026  
1027 @@ -128,7 +128,7 @@
1028                 wakeup_softirqd(cpu);
1029  }
1030  
1031 -void raise_softirq(unsigned int nr)
1032 +void fastcall raise_softirq(unsigned int nr)
1033  {
1034         unsigned long flags;
1035  
1036 @@ -149,7 +149,7 @@
1037  struct tasklet_head tasklet_vec[NR_CPUS] __cacheline_aligned;
1038  struct tasklet_head tasklet_hi_vec[NR_CPUS] __cacheline_aligned;
1039  
1040 -void __tasklet_schedule(struct tasklet_struct *t)
1041 +void fastcall __tasklet_schedule(struct tasklet_struct *t)
1042  {
1043         int cpu = smp_processor_id();
1044         unsigned long flags;
1045 @@ -161,7 +161,7 @@
1046         local_irq_restore(flags);
1047  }
1048  
1049 -void __tasklet_hi_schedule(struct tasklet_struct *t)
1050 +void fastcall __tasklet_hi_schedule(struct tasklet_struct *t)
1051  {
1052         int cpu = smp_processor_id();
1053         unsigned long flags;
1054 diff -urN linux-2.4.24/kernel/sysctl.c linux-2.4.24-new/kernel/sysctl.c
1055 --- linux-2.4.24/kernel/sysctl.c        2003-11-28 11:26:21.000000000 -0700
1056 +++ linux-2.4.24-new/kernel/sysctl.c    2004-05-04 12:20:40.605838528 -0700
1057 @@ -876,7 +876,7 @@
1058                                 if (!isspace(c))
1059                                         break;
1060                                 left--;
1061 -                               ((char *) buffer)++;
1062 +                               buffer++;
1063                         }
1064                         if (!left)
1065                                 break;
1066 @@ -1029,7 +1029,7 @@
1067                                 if (!isspace(c))
1068                                         break;
1069                                 left--;
1070 -                               ((char *) buffer)++;
1071 +                               buffer++;
1072                         }
1073                         if (!left)
1074                                 break;
1075 @@ -1130,7 +1130,7 @@
1076                                 if (!isspace(c))
1077                                         break;
1078                                 left--;
1079 -                               ((char *) buffer)++;
1080 +                               buffer++;
1081                         }
1082                         if (!left)
1083                                 break;
1084 diff -urN linux-2.4.24/lib/brlock.c linux-2.4.24-new/lib/brlock.c
1085 --- linux-2.4.24/lib/brlock.c   2001-11-09 15:11:15.000000000 -0700
1086 +++ linux-2.4.24-new/lib/brlock.c       2004-05-04 12:20:40.606838376 -0700
1087 @@ -20,7 +20,7 @@
1088  brlock_read_lock_t __brlock_array[NR_CPUS][__BR_IDX_MAX] =
1089     { [0 ... NR_CPUS-1] = { [0 ... __BR_IDX_MAX-1] = RW_LOCK_UNLOCKED } };
1090  
1091 -void __br_write_lock (enum brlock_indices idx)
1092 +void fastcall __br_write_lock (enum brlock_indices idx)
1093  {
1094         int i;
1095  
1096 @@ -28,7 +28,7 @@
1097                 write_lock(&__brlock_array[cpu_logical_map(i)][idx]);
1098  }
1099  
1100 -void __br_write_unlock (enum brlock_indices idx)
1101 +void fastcall __br_write_unlock (enum brlock_indices idx)
1102  {
1103         int i;
1104  
1105 @@ -44,7 +44,7 @@
1106  struct br_wrlock __br_write_locks[__BR_IDX_MAX] =
1107     { [0 ... __BR_IDX_MAX-1] = { SPIN_LOCK_UNLOCKED } };
1108  
1109 -void __br_write_lock (enum brlock_indices idx)
1110 +void fastcall __br_write_lock (enum brlock_indices idx)
1111  {
1112         int i;
1113  
1114 @@ -59,7 +59,7 @@
1115                 }
1116  }
1117  
1118 -void __br_write_unlock (enum brlock_indices idx)
1119 +void fastcall __br_write_unlock (enum brlock_indices idx)
1120  {
1121         spin_unlock(&__br_write_locks[idx].lock);
1122  }
1123 diff -urN linux-2.4.24/lib/crc32.c linux-2.4.24-new/lib/crc32.c
1124 --- linux-2.4.24/lib/crc32.c    2003-08-25 04:44:44.000000000 -0700
1125 +++ linux-2.4.24-new/lib/crc32.c        2004-05-04 12:20:40.606838376 -0700
1126 @@ -100,7 +100,9 @@
1127         /* Align it */
1128         if(unlikely(((long)b)&3 && len)){
1129                 do {
1130 -                       DO_CRC(*((u8 *)b)++);
1131 +                       u8 *p = (u8 *)b;
1132 +                       DO_CRC(*p++);
1133 +                       b = (void *)p;
1134                 } while ((--len) && ((long)b)&3 );
1135         }
1136         if(likely(len >= 4)){
1137 @@ -121,7 +123,9 @@
1138         /* And the last few bytes */
1139         if(len){
1140                 do {
1141 -                       DO_CRC(*((u8 *)b)++);
1142 +                       u8 *p = (u8 *)b;
1143 +                       DO_CRC(*p++);
1144 +                       b = (void *)p;
1145                 } while (--len);
1146         }
1147  
1148 @@ -201,7 +205,9 @@
1149         /* Align it */
1150         if(unlikely(((long)b)&3 && len)){
1151                 do {
1152 -                       DO_CRC(*((u8 *)b)++);
1153 +                       u8 *p = (u8 *)b;
1154 +                       DO_CRC(*p++);
1155 +                       b = (u32 *)p;
1156                 } while ((--len) && ((long)b)&3 );
1157         }
1158         if(likely(len >= 4)){
1159 @@ -222,7 +228,9 @@
1160         /* And the last few bytes */
1161         if(len){
1162                 do {
1163 -                       DO_CRC(*((u8 *)b)++);
1164 +                       u8 *p = (u8 *)b;
1165 +                       DO_CRC(*p++);
1166 +                       b = (void *)p;
1167                 } while (--len);
1168         }
1169         return __be32_to_cpu(crc);
1170 diff -urN linux-2.4.24/lib/rwsem.c linux-2.4.24-new/lib/rwsem.c
1171 --- linux-2.4.24/lib/rwsem.c    2001-07-10 20:08:51.000000000 -0700
1172 +++ linux-2.4.24-new/lib/rwsem.c        2004-05-04 12:20:40.606838376 -0700
1173 @@ -152,7 +152,7 @@
1174  /*
1175   * wait for the read lock to be granted
1176   */
1177 -struct rw_semaphore *rwsem_down_read_failed(struct rw_semaphore *sem)
1178 +struct rw_semaphore * fastcall rwsem_down_read_failed(struct rw_semaphore *sem)
1179  {
1180         struct rwsem_waiter waiter;
1181  
1182 @@ -168,7 +168,7 @@
1183  /*
1184   * wait for the write lock to be granted
1185   */
1186 -struct rw_semaphore *rwsem_down_write_failed(struct rw_semaphore *sem)
1187 +struct rw_semaphore * fastcall rwsem_down_write_failed(struct rw_semaphore *sem)
1188  {
1189         struct rwsem_waiter waiter;
1190  
1191 @@ -185,7 +185,7 @@
1192   * handle waking up a waiter on the semaphore
1193   * - up_read has decremented the active part of the count if we come here
1194   */
1195 -struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem)
1196 +struct rw_semaphore * fastcall rwsem_wake(struct rw_semaphore *sem)
1197  {
1198         rwsemtrace(sem,"Entering rwsem_wake");
1199  
1200 diff -urN linux-2.4.24/lib/string.c linux-2.4.24-new/lib/string.c
1201 --- linux-2.4.24/lib/string.c   2002-08-02 17:39:46.000000000 -0700
1202 +++ linux-2.4.24-new/lib/string.c       2004-05-04 12:20:40.606838376 -0700
1203 @@ -380,14 +380,13 @@
1204   * You should not use this function to access IO space, use memcpy_toio()
1205   * or memcpy_fromio() instead.
1206   */
1207 -char * bcopy(const char * src, char * dest, int count)
1208 +void bcopy(const void * srcp, void * destp, size_t count)
1209  {
1210 -       char *tmp = dest;
1211 +       const char *src = srcp;
1212 +       char *dest = destp;
1213  
1214         while (count--)
1215 -               *tmp++ = *src++;
1216 -
1217 -       return dest;
1218 +               *dest++ = *src++;
1219  }
1220  #endif
1221  
1222 diff -urN linux-2.4.24/mm/filemap.c linux-2.4.24-new/mm/filemap.c
1223 --- linux-2.4.24/mm/filemap.c   2003-11-28 11:26:21.000000000 -0700
1224 +++ linux-2.4.24-new/mm/filemap.c       2004-05-04 12:20:40.608838072 -0700
1225 @@ -68,7 +68,7 @@
1226  #define CLUSTER_OFFSET(x)      (((x) >> page_cluster) << page_cluster)
1227  
1228  static void FASTCALL(add_page_to_hash_queue(struct page * page, struct page **p));
1229 -static void add_page_to_hash_queue(struct page * page, struct page **p)
1230 +static void fastcall add_page_to_hash_queue(struct page * page, struct page **p)
1231  {
1232         struct page *next = *p;
1233  
1234 @@ -149,7 +149,7 @@
1235  /*
1236   * Add a page to the dirty page list.
1237   */
1238 -void set_page_dirty(struct page *page)
1239 +void fastcall set_page_dirty(struct page *page)
1240  {
1241         if (!test_and_set_bit(PG_dirty, &page->flags)) {
1242                 struct address_space *mapping = page->mapping;
1243 @@ -258,7 +258,7 @@
1244  }
1245  
1246  static int FASTCALL(truncate_list_pages(struct list_head *, unsigned long, unsigned *));
1247 -static int truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial)
1248 +static int fastcall truncate_list_pages(struct list_head *head, unsigned long start, unsigned *partial)
1249  {
1250         struct list_head *curr;
1251         struct page * page;
1252 @@ -380,7 +380,7 @@
1253  }
1254  
1255  static int FASTCALL(invalidate_list_pages2(struct list_head *));
1256 -static int invalidate_list_pages2(struct list_head *head)
1257 +static int fastcall invalidate_list_pages2(struct list_head *head)
1258  {
1259         struct list_head *curr;
1260         struct page * page;
1261 @@ -710,7 +710,7 @@
1262   * and schedules an I/O to read in its contents from disk.
1263   */
1264  static int FASTCALL(page_cache_read(struct file * file, unsigned long offset));
1265 -static int page_cache_read(struct file * file, unsigned long offset)
1266 +static int fastcall page_cache_read(struct file * file, unsigned long offset)
1267  {
1268         struct address_space *mapping = file->f_dentry->d_inode->i_mapping;
1269         struct page **hash = page_hash(mapping, offset);
1270 @@ -745,7 +745,7 @@
1271   */
1272  static int FASTCALL(read_cluster_nonblocking(struct file * file, unsigned long offset,
1273                                              unsigned long filesize));
1274 -static int read_cluster_nonblocking(struct file * file, unsigned long offset,
1275 +static int fastcall read_cluster_nonblocking(struct file * file, unsigned long offset,
1276         unsigned long filesize)
1277  {
1278         unsigned long pages = CLUSTER_PAGES;
1279 @@ -826,7 +826,7 @@
1280   * callbacks that would result into the blkdev layer waking
1281   * up the page after a queue unplug.
1282   */
1283 -void wakeup_page_waiters(struct page * page)
1284 +void fastcall wakeup_page_waiters(struct page * page)
1285  {
1286         wait_queue_head_t * head;
1287  
1288 @@ -882,7 +882,7 @@
1289   * of the waiters for all of the pages in the appropriate
1290   * wait queue are woken.
1291   */
1292 -void unlock_page(struct page *page)
1293 +void fastcall unlock_page(struct page *page)
1294  {
1295         wait_queue_head_t *waitqueue = page_waitqueue(page);
1296         ClearPageLaunder(page);
1297 @@ -929,7 +929,7 @@
1298   * Get an exclusive lock on the page, optimistically
1299   * assuming it's not locked..
1300   */
1301 -void lock_page(struct page *page)
1302 +void fastcall lock_page(struct page *page)
1303  {
1304         if (TryLockPage(page))
1305                 __lock_page(page);
1306 @@ -980,7 +980,7 @@
1307   * during blocking operations..
1308   */
1309  static struct page * FASTCALL(__find_lock_page_helper(struct address_space *, unsigned long, struct page *));
1310 -static struct page * __find_lock_page_helper(struct address_space *mapping,
1311 +static struct page * fastcall __find_lock_page_helper(struct address_space *mapping,
1312                                         unsigned long offset, struct page *hash)
1313  {
1314         struct page *page;
1315 @@ -1340,7 +1340,7 @@
1316   * If it was already so marked, move it to the active queue and drop
1317   * the referenced bit.  Otherwise, just mark it for future action..
1318   */
1319 -void mark_page_accessed(struct page *page)
1320 +void fastcall mark_page_accessed(struct page *page)
1321  {
1322         if (!PageActive(page) && PageReferenced(page)) {
1323                 activate_page(page);
1324 diff -urN linux-2.4.24/mm/highmem.c linux-2.4.24-new/mm/highmem.c
1325 --- linux-2.4.24/mm/highmem.c   2003-06-13 07:51:39.000000000 -0700
1326 +++ linux-2.4.24-new/mm/highmem.c       2004-05-04 12:27:51.835281688 -0700
1327 @@ -129,7 +129,7 @@
1328         return vaddr;
1329  }
1330  
1331 -void *kmap_high(struct page *page, int nonblocking)
1332 +void * fastcall kmap_high(struct page *page, int nonblocking)
1333  {
1334         unsigned long vaddr;
1335  
1336 @@ -154,7 +154,7 @@
1337         return (void*) vaddr;
1338  }
1339  
1340 -void kunmap_high(struct page *page)
1341 +void fastcall kunmap_high(struct page *page)
1342  {
1343         unsigned long vaddr;
1344         unsigned long nr;
1345 diff -urN linux-2.4.24/mm/memory.c linux-2.4.24-new/mm/memory.c
1346 --- linux-2.4.24/mm/memory.c    2003-11-28 11:26:21.000000000 -0700
1347 +++ linux-2.4.24-new/mm/memory.c        2004-05-04 12:20:40.608838072 -0700
1348 @@ -1396,7 +1396,7 @@
1349   * On a two-level page table, this ends up actually being entirely
1350   * optimized away.
1351   */
1352 -pmd_t *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
1353 +pmd_t fastcall *__pmd_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long address)
1354  {
1355         pmd_t *new;
1356  
1357 @@ -1430,7 +1430,7 @@
1358   * We've already handled the fast-path in-line, and we own the
1359   * page table lock.
1360   */
1361 -pte_t *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
1362 +pte_t fastcall *pte_alloc(struct mm_struct *mm, pmd_t *pmd, unsigned long address)
1363  {
1364         if (pmd_none(*pmd)) {
1365                 pte_t *new;
1366 diff -urN linux-2.4.24/mm/page_alloc.c linux-2.4.24-new/mm/page_alloc.c
1367 --- linux-2.4.24/mm/page_alloc.c        2003-11-28 11:26:21.000000000 -0700
1368 +++ linux-2.4.24-new/mm/page_alloc.c    2004-05-04 12:22:05.157984648 -0700
1369 @@ -82,7 +82,7 @@
1370   */
1371  
1372  static void FASTCALL(__free_pages_ok (struct page *page, unsigned int order));
1373 -static void __free_pages_ok (struct page *page, unsigned int order)
1374 +static void fastcall __free_pages_ok (struct page *page, unsigned int order)
1375  {
1376         unsigned long index, page_idx, mask, flags;
1377         free_area_t *area;
1378 @@ -200,7 +200,7 @@
1379  }
1380  
1381  static FASTCALL(struct page * rmqueue(zone_t *zone, unsigned int order));
1382 -static struct page * rmqueue(zone_t *zone, unsigned int order)
1383 +static struct page * fastcall rmqueue(zone_t *zone, unsigned int order)
1384  {
1385         free_area_t * area = zone->free_area + order;
1386         unsigned int curr_order = order;
1387 @@ -246,7 +246,7 @@
1388  }
1389  
1390  #ifndef CONFIG_DISCONTIGMEM
1391 -struct page *_alloc_pages(unsigned int gfp_mask, unsigned int order)
1392 +struct page * fastcall _alloc_pages(unsigned int gfp_mask, unsigned int order)
1393  {
1394         return __alloc_pages(gfp_mask, order,
1395                 contig_page_data.node_zonelists+(gfp_mask & GFP_ZONEMASK));
1396 @@ -254,7 +254,7 @@
1397  #endif
1398  
1399  static struct page * FASTCALL(balance_classzone(zone_t *, unsigned int, unsigned int, int *));
1400 -static struct page * balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
1401 +static struct page * fastcall balance_classzone(zone_t * classzone, unsigned int gfp_mask, unsigned int order, int * freed)
1402  {
1403         struct page * page = NULL;
1404         int __freed;
1405 @@ -332,7 +332,7 @@
1406  /*
1407   * This is the 'heart' of the zoned buddy allocator:
1408   */
1409 -struct page * __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
1410 +struct page * fastcall __alloc_pages(unsigned int gfp_mask, unsigned int order, zonelist_t *zonelist)
1411  {
1412         zone_t **zone, * classzone;
1413         struct page * page;
1414 @@ -444,7 +444,7 @@
1415  /*
1416   * Common helper functions.
1417   */
1418 -unsigned long __get_free_pages(unsigned int gfp_mask, unsigned int order)
1419 +unsigned long fastcall __get_free_pages(unsigned int gfp_mask, unsigned int order)
1420  {
1421         struct page * page;
1422  
1423 @@ -454,7 +454,7 @@
1424         return (unsigned long) page_address(page);
1425  }
1426  
1427 -unsigned long get_zeroed_page(unsigned int gfp_mask)
1428 +unsigned long fastcall get_zeroed_page(unsigned int gfp_mask)
1429  {
1430         struct page * page;
1431  
1432 @@ -467,13 +467,13 @@
1433         return 0;
1434  }
1435  
1436 -void __free_pages(struct page *page, unsigned int order)
1437 +void fastcall __free_pages(struct page *page, unsigned int order)
1438  {
1439         if (!PageReserved(page) && put_page_testzero(page))
1440                 __free_pages_ok(page, order);
1441  }
1442  
1443 -void free_pages(unsigned long addr, unsigned int order)
1444 +void fastcall free_pages(unsigned long addr, unsigned int order)
1445  {
1446         if (addr != 0)
1447                 __free_pages(virt_to_page(addr), order);
1448 diff -urN linux-2.4.24/mm/slab.c linux-2.4.24-new/mm/slab.c
1449 --- linux-2.4.24/mm/slab.c      2003-11-28 11:26:21.000000000 -0700
1450 +++ linux-2.4.24-new/mm/slab.c  2004-05-04 12:20:40.611837616 -0700
1451 @@ -1735,7 +1735,7 @@
1452   *
1453   * Called from do_try_to_free_pages() and __alloc_pages()
1454   */
1455 -int kmem_cache_reap (int gfp_mask)
1456 +int fastcall kmem_cache_reap (int gfp_mask)
1457  {
1458         slab_t *slabp;
1459         kmem_cache_t *searchp;
1460 diff -urN linux-2.4.24/mm/swap.c linux-2.4.24-new/mm/swap.c
1461 --- linux-2.4.24/mm/swap.c      2003-11-28 11:26:21.000000000 -0700
1462 +++ linux-2.4.24-new/mm/swap.c  2004-05-04 12:20:40.611837616 -0700
1463 @@ -44,7 +44,7 @@
1464         }
1465  }
1466  
1467 -void activate_page(struct page * page)
1468 +void fastcall activate_page(struct page * page)
1469  {
1470         spin_lock(&pagemap_lru_lock);
1471         activate_page_nolock(page);
1472 @@ -55,7 +55,7 @@
1473   * lru_cache_add: add a page to the page lists
1474   * @page: the page to add
1475   */
1476 -void lru_cache_add(struct page * page)
1477 +void fastcall lru_cache_add(struct page * page)
1478  {
1479         if (!PageLRU(page)) {
1480                 spin_lock(&pagemap_lru_lock);
1481 @@ -72,7 +72,7 @@
1482   * This function is for when the caller already holds
1483   * the pagemap_lru_lock.
1484   */
1485 -void __lru_cache_del(struct page * page)
1486 +void fastcall __lru_cache_del(struct page * page)
1487  {
1488         if (TestClearPageLRU(page)) {
1489                 if (PageActive(page)) {
1490 @@ -87,7 +87,7 @@
1491   * lru_cache_del: remove a page from the page lists
1492   * @page: the page to remove
1493   */
1494 -void lru_cache_del(struct page * page)
1495 +void fastcall lru_cache_del(struct page * page)
1496  {
1497         spin_lock(&pagemap_lru_lock);
1498         __lru_cache_del(page);
1499 diff -urN linux-2.4.24/mm/swapfile.c linux-2.4.24-new/mm/swapfile.c
1500 --- linux-2.4.24/mm/swapfile.c  2003-08-25 04:44:44.000000000 -0700
1501 +++ linux-2.4.24-new/mm/swapfile.c      2004-05-04 12:20:40.611837616 -0700
1502 @@ -256,7 +256,7 @@
1503   * work, but we opportunistically check whether
1504   * we need to get all the locks first..
1505   */
1506 -int can_share_swap_page(struct page *page)
1507 +int fastcall can_share_swap_page(struct page *page)
1508  {
1509         int retval = 0;
1510  
1511 @@ -284,7 +284,7 @@
1512   * Work out if there are any other processes sharing this
1513   * swap cache page. Free it if you can. Return success.
1514   */
1515 -int remove_exclusive_swap_page(struct page *page)
1516 +int fastcall remove_exclusive_swap_page(struct page *page)
1517  {
1518         int retval;
1519         struct swap_info_struct * p;
1520 diff -urN linux-2.4.24/mm/vmscan.c linux-2.4.24-new/mm/vmscan.c
1521 --- linux-2.4.24/mm/vmscan.c    2003-11-28 11:26:21.000000000 -0700
1522 +++ linux-2.4.24-new/mm/vmscan.c        2004-05-04 12:20:40.612837464 -0700
1523 @@ -323,7 +323,7 @@
1524  }
1525  
1526  static int FASTCALL(swap_out(zone_t * classzone));
1527 -static int swap_out(zone_t * classzone)
1528 +static int fastcall swap_out(zone_t * classzone)
1529  {
1530         int counter, nr_pages = SWAP_CLUSTER_MAX;
1531         struct mm_struct *mm;
1532 @@ -366,7 +366,7 @@
1533  
1534  static void FASTCALL(refill_inactive(int nr_pages, zone_t * classzone));
1535  static int FASTCALL(shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout));
1536 -static int shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout)
1537 +static int fastcall shrink_cache(int nr_pages, zone_t * classzone, unsigned int gfp_mask, int * failed_swapout)
1538  {
1539         struct list_head * entry;
1540         int max_scan = (classzone->nr_inactive_pages + classzone->nr_active_pages) / vm_cache_scan_ratio;
1541 @@ -577,7 +577,7 @@
1542   * We move them the other way when we see the
1543   * reference bit on the page.
1544   */
1545 -static void refill_inactive(int nr_pages, zone_t * classzone)
1546 +static void fastcall refill_inactive(int nr_pages, zone_t * classzone)
1547  {
1548         struct list_head * entry;
1549         unsigned long ratio;
1550 @@ -610,7 +610,7 @@
1551  }
1552  
1553  static int FASTCALL(shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout));
1554 -static int shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout)
1555 +static int fastcall shrink_caches(zone_t * classzone, unsigned int gfp_mask, int nr_pages, int * failed_swapout)
1556  {
1557         nr_pages -= kmem_cache_reap(gfp_mask);
1558         if (nr_pages <= 0)
1559 @@ -627,7 +627,7 @@
1560  
1561  static int check_classzone_need_balance(zone_t * classzone);
1562  
1563 -int try_to_free_pages_zone(zone_t *classzone, unsigned int gfp_mask)
1564 +int fastcall try_to_free_pages_zone(zone_t *classzone, unsigned int gfp_mask)
1565  {
1566         gfp_mask = pf_gfp_mask(gfp_mask);
1567  
1568 @@ -661,7 +661,7 @@
1569         return 0;
1570  }
1571  
1572 -int try_to_free_pages(unsigned int gfp_mask)
1573 +int fastcall try_to_free_pages(unsigned int gfp_mask)
1574  {
1575         pg_data_t *pgdat;
1576         zonelist_t *zonelist;
1577 diff -urN linux-2.4.24/net/ipv4/ip_output.c linux-2.4.24-new/net/ipv4/ip_output.c
1578 --- linux-2.4.24/net/ipv4/ip_output.c   2003-11-28 11:26:21.000000000 -0700
1579 +++ linux-2.4.24-new/net/ipv4/ip_output.c       2004-05-04 12:20:40.612837464 -0700
1580 @@ -184,7 +184,7 @@
1581         return -EINVAL;
1582  }
1583  
1584 -__inline__ int ip_finish_output(struct sk_buff *skb)
1585 +int ip_finish_output(struct sk_buff *skb)
1586  {
1587         struct net_device *dev = skb->dst->dev;
1588