I'm messing around with Linux kernel 2.4 and function schedule() in sched.c uses the macro prepare_arch_schedule, which looks really strange. What is that?
Here's the relevant section
#ifndef prepare_arch_schedule
# define prepare_arch_schedule(prev) do { } while(0)
# define finish_arch_schedule(prev) do { } while(0)
# define prepare_arch_switch(rq) do { } while(0)
# define finish_arch_switch(rq) spin_unlock_irq(&(rq)->lock)
#endif