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
5 CFLAGS += $(call check_gcc,-march=c3-2,-march=i686)
8 +CFLAGS += $(call check_gcc,-fno-unit-at-a-time,)
10 HEAD := arch/i386/kernel/head.o arch/i386/kernel/init_task.o
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
17 static void *malloc(int size);
18 static void free(void *where);
20 -static void puts(const char *);
21 +static void putstr(const char *);
24 static long free_mem_ptr = (long)&end;
29 -static void puts(const char *s)
30 +static void putstr(const char *s)
36 static void error(char *x)
40 - puts("\n\n -- System halted");
43 + putstr("\n\n -- System halted");
48 else setup_output_buffer_if_we_run_high(mv);
51 - puts("Uncompressing Linux... ");
52 + putstr("Uncompressing Linux... ");
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);
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
66 -void send_IPI_self(int vector)
67 +void fastcall send_IPI_self(int vector)
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 @@
80 : "0" (PCIBIOS_GET_ROUTING_OPTIONS),
83 - "S" (&pci_indirect));
84 + "S" (&pci_indirect),
87 DBG("OK ret=%d, size=%d, map=%x\n", ret, opt.size, map);
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
94 * More important, however, is the fact that this allows us much
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)
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
106 * want to handle. Thus you cannot kill init even with a SIGKILL even by
109 -int do_signal(struct pt_regs *regs, sigset_t *oldset)
110 +int fastcall do_signal(struct pt_regs *regs, sigset_t *oldset)
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
118 apic_write_around(APIC_ICR, cfg);
121 -void send_IPI_self(int vector)
122 +void fastcall send_IPI_self(int vector)
124 __send_IPI_shortcut(APIC_DEST_SELF, vector);
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
130 #define VM86_REGS_SIZE2 (sizeof(struct kernel_vm86_regs) - VM86_REGS_SIZE1)
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)
136 struct tss_struct *tss;
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
145 - ((char *) buffer)++;
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
154 static void gzip_mark(void **);
155 static void gzip_release(void **);
157 -static void puts(const char *);
158 +static void putstr(const char *);
161 static long free_mem_ptr = (long)&end;
166 -static void puts(const char *s)
167 +static void putstr(const char *s)
173 static void error(char *x)
177 - puts("\n\n -- System halted");
180 + putstr("\n\n -- System halted");
185 else setup_output_buffer_if_we_run_high(mv);
188 - puts(".\nDecompressing Linux...");
189 + putstr(".\nDecompressing Linux...");
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);
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 @@
204 struct floppy_struct *f;
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;
217 @@ -2708,20 +2710,23 @@
219 struct blkpg_ioctl_arg a;
220 struct blkpg_partition p;
221 + struct blkpg_partition *up32;
224 mm_segment_t old_fs = get_fs();
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;
234 case BLKPG_ADD_PARTITION:
235 case BLKPG_DEL_PARTITION:
236 if (a.datalen < sizeof(struct blkpg_partition))
238 - if (copy_from_user(&p, a.data, sizeof(struct blkpg_partition)))
239 + if (copy_from_user(&p, up32, sizeof(struct blkpg_partition)))
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 @@
250 + u32 handler, restorer;
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)))
260 + new_ka.sa.sa_handler = (void*)(u64)handler;
261 + new_ka.sa.sa_restorer = (void*)(u64)restorer;
263 /* FIXME: here we rely on _IA32_NSIG_WORS to be >= than _NSIG_WORDS << 1 */
264 switch (_NSIG_WORDS) {
265 @@ -438,13 +442,16 @@
269 + u32 handler, restorer;
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))
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);
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;
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
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);
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
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));
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
321 * for the same vblank sequence number; nothing to be done in
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 @@
331 void DRM(vbl_send_signals)( drm_device_t *dev )
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 );
339 spin_lock_irqsave( &dev->vbl_lock, flags );
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 );
348 - list_del( (struct list_head *) 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 */
359 image->height -= height;
360 - (const u8 *)image->data += size;
361 + image->data = (const u8 *)image->data + size;
362 } while (image->height > 0);
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
369 ft_format_code == fmt_1100ft) {
370 SectorCount *ptr = (SectorCount *)bad_sector_map;
374 while((sector = get_sector(ptr++)) != 0) {
375 if ((ft_format_code == fmt_big ||
378 /* Display old ftape's end-of-file marks
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++));
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
394 typedef struct NewSectorMap {
396 -} SectorCount __attribute__((packed));
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
405 while (ptr + 3 < limit) {
407 if (get_unaligned((__u32*)ptr)) {
409 + ptr += sizeof(__u32);
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
419 /* grab single byte from the warp fifo */
420 - *((char *)buf)++ = inb (EPPDATA (port));
421 + *((char *)buf) = inb (EPPDATA (port));
429 for (; got < length; got++) {
430 - *((char*)buf)++ = inb (EPPDATA(port));
431 + *((char*)buf) = inb (EPPDATA(port));
433 if (inb (STATUS (port)) & 0x01) {
435 clear_epp_timeout (port);
439 for (; written < length; written++) {
440 - outb (*((char*)buf)++, EPPDATA(port));
441 + outb (*((char*)buf), EPPDATA(port));
443 if (inb (STATUS(port)) & 0x01) {
444 clear_epp_timeout (port);
449 for (; got < length; got++) {
450 - *((char*)buf)++ = inb (EPPADDR (port));
451 + *((char*)buf) = inb (EPPADDR (port));
453 if (inb (STATUS (port)) & 0x01) {
454 clear_epp_timeout (port);
459 for (; written < length; written++) {
460 - outb (*((char*)buf)++, EPPADDR (port));
461 + outb (*((char*)buf), EPPADDR (port));
463 if (inb (STATUS (port)) & 0x01) {
464 clear_epp_timeout (port);
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
472 int ret = pcmcia_request_window(a1, a2, &w);
473 - (window_handle_t *)a1 = w;
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 @@
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);
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);
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
507 - while (p > new_data) k += *--(u32 *)p;
508 + while (p > new_data) {
509 + p = (u8 *)((u32 *)p - 1);
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
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};
522 -void unlock_buffer(struct buffer_head *bh)
523 +void fastcall unlock_buffer(struct buffer_head *bh)
525 clear_bit(BH_Wait_IO, &bh->b_state);
526 clear_bit(BH_Launder, &bh->b_state);
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)
534 spin_lock(&lru_list_lock);
535 if (buffer_attached(bh))
536 @@ -1056,7 +1056,7 @@
538 EXPORT_SYMBOL(balance_dirty);
540 -inline void __mark_dirty(struct buffer_head *bh)
541 +inline void fastcall __mark_dirty(struct buffer_head *bh)
543 bh->b_flushtime = jiffies + bdf_prm.b_un.age_buffer;
545 @@ -1064,13 +1064,13 @@
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)
552 if (!atomic_set_buffer_dirty(bh))
556 -void mark_buffer_dirty(struct buffer_head *bh)
557 +void fastcall mark_buffer_dirty(struct buffer_head *bh)
559 if (!atomic_set_buffer_dirty(bh)) {
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.
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)
568 struct buffer_head * tmp, * bh = page->buffers;
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
577 -void fput(struct file * file)
578 +void fastcall fput(struct file * file)
580 struct dentry * dentry = file->f_dentry;
581 struct vfsmount * mnt = file->f_vfsmnt;
586 -struct file * fget(unsigned int fd)
587 +struct file * fastcall fget(unsigned int fd)
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
596 * We expect 'base' to be positive and a directory.
598 -int link_path_walk(const char * name, struct nameidata *nd)
599 +int fastcall link_path_walk(const char * name, struct nameidata *nd)
601 struct dentry *dentry;
607 -int path_walk(const char * name, struct nameidata *nd)
608 +int fastcall path_walk(const char * name, struct nameidata *nd)
610 current->total_link_count = 0;
611 return link_path_walk(name, nd);
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)
620 if (path_init(path, flags, nd))
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)
628 nd->last_type = LAST_ROOT; /* if there are only slashes... */
631 * that namei follows links, while lnamei does not.
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)
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
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;
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;
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
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
678 "# ending down_read\n\t"
682 + : "a"(sem), "m"(sem->count)
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 */
696 LOCK_SECTION_START("")
700 "# ending down_write"
701 - : "+d"(tmp), "+m"(sem->count)
703 + : "=m"(sem->count), "=d"(tmp)
704 + : "a"(sem), "1"(tmp), "m"(sem->count)
711 "# ending __up_read\n"
712 - : "+m"(sem->count), "+d"(tmp)
714 + : "=m"(sem->count), "=d"(tmp)
715 + : "a"(sem), "1"(tmp), "m"(sem->count)
722 "# ending __up_write\n"
724 - : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS)
726 + : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS), "m"(sem->count)
727 : "memory", "cc", "edx");
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
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)
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
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)
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
760 extern long sys_exit(int) __attribute__((noreturn));
761 -extern inline long exit(int error_code)
762 +static inline void exit(int error_code)
764 sys_exit(error_code);
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
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 *);
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
782 #define likely(x) __builtin_expect((x),1)
783 #define unlikely(x) __builtin_expect((x),0)
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))
791 +#endif /* __GNUC__ */
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 @@
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 *);
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
817 #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)
819 -#define __IRQ_STAT(cpu, member) ((void)(cpu), irq_stat[0].member)
820 +#define __IRQ_STAT(cpu, member) (irq_stat[((void)(cpu), 0)].member)
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
830 #define FASTCALL(x) x __attribute__((regparm(3)))
831 +#define fastcall __attribute__((regparm(3)))
833 #define FASTCALL(x) x
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
842 extern void end_lazy_tlb(struct mm_struct *mm);
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)
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
855 * sends a 'reschedule' event to another CPU:
857 -extern void FASTCALL(smp_send_reschedule(int cpu));
858 +extern void smp_send_reschedule(int cpu);
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
866 void ip_send_reply(struct sock *sk, struct sk_buff *skb, struct ip_reply_arg *arg,
869 -extern __inline__ int ip_finish_output(struct sk_buff *skb);
870 +extern int ip_finish_output(struct sk_buff *skb);
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
879 struct task_struct *pidhash[PIDHASH_SZ];
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)
887 wq_write_unlock_irqrestore(&q->lock, flags);
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)
896 wq_write_unlock_irqrestore(&q->lock, flags);
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)
905 * is dropped: either by a lazy thread or by
906 * mmput. Free the page directory and the mm.
908 -inline void __mmdrop(struct mm_struct *mm)
909 +void fastcall __mmdrop(struct mm_struct *mm)
911 BUG_ON(mm == &init_mm);
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
918 static FASTCALL(void reschedule_idle(struct task_struct * p));
920 -static void reschedule_idle(struct task_struct * p)
921 +static void fastcall reschedule_idle(struct task_struct * p)
924 int this_cpu = smp_processor_id();
929 -inline int wake_up_process(struct task_struct * p)
930 +inline int fastcall wake_up_process(struct task_struct * p)
932 return try_to_wake_up(p, 0);
936 * In all cases the return value is guaranteed to be non-negative.
938 -signed long schedule_timeout(signed long timeout)
939 +signed long fastcall schedule_timeout(signed long timeout)
941 struct timer_list timer;
942 unsigned long expire;
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)
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)
965 -void complete(struct completion *x)
966 +void fastcall complete(struct completion *x)
971 spin_unlock_irqrestore(&x->wait.lock, flags);
974 -void wait_for_completion(struct completion *x)
975 +void fastcall wait_for_completion(struct completion *x)
977 spin_lock_irq(&x->wait.lock);
980 __remove_wait_queue(q, &wait); \
981 wq_write_unlock_irqrestore(&q->lock,flags);
983 -void interruptible_sleep_on(wait_queue_head_t *q)
984 +void fastcall interruptible_sleep_on(wait_queue_head_t *q)
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)
1001 -void sleep_on(wait_queue_head_t *q)
1002 +void fastcall sleep_on(wait_queue_head_t *q)
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)
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
1020 * This function must run with irq disabled!
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)
1025 __cpu_raise_softirq(cpu, nr);
1028 wakeup_softirqd(cpu);
1031 -void raise_softirq(unsigned int nr)
1032 +void fastcall raise_softirq(unsigned int nr)
1034 unsigned long flags;
1037 struct tasklet_head tasklet_vec[NR_CPUS] __cacheline_aligned;
1038 struct tasklet_head tasklet_hi_vec[NR_CPUS] __cacheline_aligned;
1040 -void __tasklet_schedule(struct tasklet_struct *t)
1041 +void fastcall __tasklet_schedule(struct tasklet_struct *t)
1043 int cpu = smp_processor_id();
1044 unsigned long flags;
1046 local_irq_restore(flags);
1049 -void __tasklet_hi_schedule(struct tasklet_struct *t)
1050 +void fastcall __tasklet_hi_schedule(struct tasklet_struct *t)
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
1061 - ((char *) buffer)++;
1066 @@ -1029,7 +1029,7 @@
1070 - ((char *) buffer)++;
1075 @@ -1130,7 +1130,7 @@
1079 - ((char *) buffer)++;
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
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 } };
1091 -void __br_write_lock (enum brlock_indices idx)
1092 +void fastcall __br_write_lock (enum brlock_indices idx)
1097 write_lock(&__brlock_array[cpu_logical_map(i)][idx]);
1100 -void __br_write_unlock (enum brlock_indices idx)
1101 +void fastcall __br_write_unlock (enum brlock_indices idx)
1106 struct br_wrlock __br_write_locks[__BR_IDX_MAX] =
1107 { [0 ... __BR_IDX_MAX-1] = { SPIN_LOCK_UNLOCKED } };
1109 -void __br_write_lock (enum brlock_indices idx)
1110 +void fastcall __br_write_lock (enum brlock_indices idx)
1118 -void __br_write_unlock (enum brlock_indices idx)
1119 +void fastcall __br_write_unlock (enum brlock_indices idx)
1121 spin_unlock(&__br_write_locks[idx].lock);
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
1128 if(unlikely(((long)b)&3 && len)){
1130 - DO_CRC(*((u8 *)b)++);
1134 } while ((--len) && ((long)b)&3 );
1136 if(likely(len >= 4)){
1138 /* And the last few bytes */
1141 - DO_CRC(*((u8 *)b)++);
1150 if(unlikely(((long)b)&3 && len)){
1152 - DO_CRC(*((u8 *)b)++);
1156 } while ((--len) && ((long)b)&3 );
1158 if(likely(len >= 4)){
1160 /* And the last few bytes */
1163 - DO_CRC(*((u8 *)b)++);
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
1175 * wait for the read lock to be granted
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)
1180 struct rwsem_waiter waiter;
1184 * wait for the write lock to be granted
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)
1189 struct rwsem_waiter waiter;
1192 * handle waking up a waiter on the semaphore
1193 * - up_read has decremented the active part of the count if we come here
1195 -struct rw_semaphore *rwsem_wake(struct rw_semaphore *sem)
1196 +struct rw_semaphore * fastcall rwsem_wake(struct rw_semaphore *sem)
1198 rwsemtrace(sem,"Entering rwsem_wake");
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.
1207 -char * bcopy(const char * src, char * dest, int count)
1208 +void bcopy(const void * srcp, void * destp, size_t count)
1211 + const char *src = srcp;
1212 + char *dest = destp;
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
1226 #define CLUSTER_OFFSET(x) (((x) >> page_cluster) << page_cluster)
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)
1232 struct page *next = *p;
1236 * Add a page to the dirty page list.
1238 -void set_page_dirty(struct page *page)
1239 +void fastcall set_page_dirty(struct page *page)
1241 if (!test_and_set_bit(PG_dirty, &page->flags)) {
1242 struct address_space *mapping = page->mapping;
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)
1250 struct list_head *curr;
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)
1259 struct list_head *curr;
1262 * and schedules an I/O to read in its contents from disk.
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)
1268 struct address_space *mapping = file->f_dentry->d_inode->i_mapping;
1269 struct page **hash = page_hash(mapping, offset);
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)
1278 unsigned long pages = CLUSTER_PAGES;
1280 * callbacks that would result into the blkdev layer waking
1281 * up the page after a queue unplug.
1283 -void wakeup_page_waiters(struct page * page)
1284 +void fastcall wakeup_page_waiters(struct page * page)
1286 wait_queue_head_t * head;
1289 * of the waiters for all of the pages in the appropriate
1290 * wait queue are woken.
1292 -void unlock_page(struct page *page)
1293 +void fastcall unlock_page(struct page *page)
1295 wait_queue_head_t *waitqueue = page_waitqueue(page);
1296 ClearPageLaunder(page);
1298 * Get an exclusive lock on the page, optimistically
1299 * assuming it's not locked..
1301 -void lock_page(struct page *page)
1302 +void fastcall lock_page(struct page *page)
1304 if (TryLockPage(page))
1307 * during blocking operations..
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)
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..
1319 -void mark_page_accessed(struct page *page)
1320 +void fastcall mark_page_accessed(struct page *page)
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
1331 -void *kmap_high(struct page *page, int nonblocking)
1332 +void * fastcall kmap_high(struct page *page, int nonblocking)
1334 unsigned long vaddr;
1337 return (void*) vaddr;
1340 -void kunmap_high(struct page *page)
1341 +void fastcall kunmap_high(struct page *page)
1343 unsigned long vaddr;
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
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)
1357 @@ -1430,7 +1430,7 @@
1358 * We've already handled the fast-path in-line, and we own the
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)
1364 if (pmd_none(*pmd)) {
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
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)
1376 unsigned long index, page_idx, mask, flags;
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)
1385 free_area_t * area = zone->free_area + order;
1386 unsigned int curr_order = order;
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)
1394 return __alloc_pages(gfp_mask, order,
1395 contig_page_data.node_zonelists+(gfp_mask & GFP_ZONEMASK));
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)
1403 struct page * page = NULL;
1407 * This is the 'heart' of the zoned buddy allocator:
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)
1412 zone_t **zone, * classzone;
1416 * Common helper functions.
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)
1424 return (unsigned long) page_address(page);
1427 -unsigned long get_zeroed_page(unsigned int gfp_mask)
1428 +unsigned long fastcall get_zeroed_page(unsigned int gfp_mask)
1432 @@ -467,13 +467,13 @@
1436 -void __free_pages(struct page *page, unsigned int order)
1437 +void fastcall __free_pages(struct page *page, unsigned int order)
1439 if (!PageReserved(page) && put_page_testzero(page))
1440 __free_pages_ok(page, order);
1443 -void free_pages(unsigned long addr, unsigned int order)
1444 +void fastcall free_pages(unsigned long addr, unsigned int order)
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 @@
1453 * Called from do_try_to_free_pages() and __alloc_pages()
1455 -int kmem_cache_reap (int gfp_mask)
1456 +int fastcall kmem_cache_reap (int gfp_mask)
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
1467 -void activate_page(struct page * page)
1468 +void fastcall activate_page(struct page * page)
1470 spin_lock(&pagemap_lru_lock);
1471 activate_page_nolock(page);
1473 * lru_cache_add: add a page to the page lists
1474 * @page: the page to add
1476 -void lru_cache_add(struct page * page)
1477 +void fastcall lru_cache_add(struct page * page)
1479 if (!PageLRU(page)) {
1480 spin_lock(&pagemap_lru_lock);
1482 * This function is for when the caller already holds
1483 * the pagemap_lru_lock.
1485 -void __lru_cache_del(struct page * page)
1486 +void fastcall __lru_cache_del(struct page * page)
1488 if (TestClearPageLRU(page)) {
1489 if (PageActive(page)) {
1491 * lru_cache_del: remove a page from the page lists
1492 * @page: the page to remove
1494 -void lru_cache_del(struct page * page)
1495 +void fastcall lru_cache_del(struct page * page)
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
1503 * work, but we opportunistically check whether
1504 * we need to get all the locks first..
1506 -int can_share_swap_page(struct page *page)
1507 +int fastcall can_share_swap_page(struct page *page)
1512 * Work out if there are any other processes sharing this
1513 * swap cache page. Free it if you can. Return success.
1515 -int remove_exclusive_swap_page(struct page *page)
1516 +int fastcall remove_exclusive_swap_page(struct page *page)
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
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)
1530 int counter, nr_pages = SWAP_CLUSTER_MAX;
1531 struct mm_struct *mm;
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)
1539 struct list_head * entry;
1540 int max_scan = (classzone->nr_inactive_pages + classzone->nr_active_pages) / vm_cache_scan_ratio;
1542 * We move them the other way when we see the
1543 * reference bit on the page.
1545 -static void refill_inactive(int nr_pages, zone_t * classzone)
1546 +static void fastcall refill_inactive(int nr_pages, zone_t * classzone)
1548 struct list_head * entry;
1549 unsigned long ratio;
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)
1557 nr_pages -= kmem_cache_reap(gfp_mask);
1561 static int check_classzone_need_balance(zone_t * classzone);
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)
1566 gfp_mask = pf_gfp_mask(gfp_mask);
1572 -int try_to_free_pages(unsigned int gfp_mask)
1573 +int fastcall try_to_free_pages(unsigned int gfp_mask)
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
1584 -__inline__ int ip_finish_output(struct sk_buff *skb)
1585 +int ip_finish_output(struct sk_buff *skb)
1587 struct net_device *dev = skb->dst->dev;