This patch extends and cleans up the early generic CPU alternative patching.

It adds automatic patching for (SSE) prefetches and 3dnow! writeprefetches. This is one step towards making the Athlon kernel workon Intel CPUs again. It's not fully finished yet because the memcpystill uses 3dnow!.

I had to split the alternative section into two for this. The reasonis that for big kernels gas or ld would sometimes add a few paddingbytes after the replacement instruction in .altinstructions, and thatwould confuse the patcher who relied on knowing the exact lengthof the instruction. Now the instructions are in another section with a pointer from the main patch record.

It also adds nop types for various CPUs straight from their optimization manuals. Now you can always get the fastest nops for K7,K8 and Intel.I moved them into the include files to make it easy to use themfor padding alternative()s. Some cleanups in the patch function to use this.

This runs before SMP is initialized to avoid SMP problems with self modifying code. This implies that assymetric systems where APs have less capabilities than the boot processor are not handled. - In this case boot with "noreplacement". */ void apply_alternatives(void *start, void *end) { struct alt_instr *a; int diff, i, k;