diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-03-25 14:10:16 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2003-03-25 14:10:16 +0000 |
commit | 40d269696c5de58c38df86d11f7debfb970c474d (patch) | |
tree | 155601347e039cf9acc7533ed98c49376071c47d /old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c | |
parent | 82a3e7c6c21b9d8eddc706c652cf57f73de5af21 (diff) | |
download | xen-40d269696c5de58c38df86d11f7debfb970c474d.tar.gz xen-40d269696c5de58c38df86d11f7debfb970c474d.tar.bz2 xen-40d269696c5de58c38df86d11f7debfb970c474d.zip |
bitkeeper revision 1.160 (3e806348iI6F7p-OrCqKtE4h8_NgxQ)
.del-xor.h~2cd144e48fc282fb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/xor.h
.del-vga.h~f739bcd0d15a060b:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/vga.h
.del-user.h~2416efc51bfdf653:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/user.h
.del-unistd.h~542a4265bbde875f:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/unistd.h
.del-unaligned.h~3720d8e6f6489c70:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/unaligned.h
.del-ucontext.h~7c514eccb96e5c2c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ucontext.h
.del-uaccess.h~1db7128cf065d28:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/uaccess.h
.del-types.h~6f89af02373cf40e:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/types.h
.del-tlb.h~36a10111face8cf8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/tlb.h
.del-timex.h~14ba40d5403480f8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/timex.h
.del-termios.h~10cb1919354bb3c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/termios.h
.del-termbits.h~9f49d578b6425137:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/termbits.h
.del-system.h~1209f9cb8d09be:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/system.h
.del-swapfile.c~28c1c327b22a067f:
Delete: old/xenolinux-2.4.16-sparse/mm/swapfile.c
.del-string.h~1bd164bf2f37435a:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/string.h
.del-string-486.h~70f2949afd4c7217:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/string-486.h
.del-statfs.h~925b3af593956e2d:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/statfs.h
.del-stat.h~e85bc81529de3a4a:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/stat.h
.del-panic.c~5033fabb3f2e710c:
Delete: old/xenolinux-2.4.16-sparse/kernel/panic.c
.del-mremap.c~5787787c5a3b49d:
Delete: old/xenolinux-2.4.16-sparse/mm/mremap.c
.del-memory.c~ec1a749ca2ed8acd:
Delete: old/xenolinux-2.4.16-sparse/mm/memory.c
.del-major.h~7653e946e9bf8159:
Delete: old/xenolinux-2.4.16-sparse/include/linux/major.h
.del-main.c~de169eb833d5a5cb:
Delete: old/xenolinux-2.4.16-sparse/init/main.c
.del-debug.h~e0aa141e34ec6221:
Delete: old/xenolinux-2.4.16-sparse/include/linux/sunrpc/debug.h
.del-blk.h~87e7b6403472571f:
Delete: old/xenolinux-2.4.16-sparse/include/linux/blk.h
.del-spinlock.h~fc0a4c0ddea83815:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/spinlock.h
.del-softirq.h~c188e7ac18c858a9:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/softirq.h
.del-sockios.h~65e1b7ba563df2c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/sockios.h
.del-socket.h~e3ba5757776f00c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/socket.h
.del-smplock.h~72176dfb8142375e:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/smplock.h
.del-smp.h~80313a5f7eb193bb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/smp.h
.del-signal.h~2f1c9e8a4364ed8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/signal.h
.del-siginfo.h~348801659d7e1334:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/siginfo.h
.del-sigcontext.h~1b647a394613b0dc:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/sigcontext.h
.del-shmparam.h~c83ce37d9b16061c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/shmparam.h
.del-shmbuf.h~3ff48e518b9ecb0a:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/shmbuf.h
.del-setup.h~2d7d5e0b8c7c48dc:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/setup.h
.del-serial.h~90dee919c827ab29:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/serial.h
.del-sembuf.h~f0fa7347b9fc071:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/sembuf.h
.del-semaphore.h~d9f40f7e118c9d3c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/semaphore.h
.del-segment.h~cc492acab0d69477:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/segment.h
.del-scatterlist.h~4be6ff4f53a3579b:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/scatterlist.h
.del-rwsem.h~c9865b4ec1423b3a:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/rwsem.h
.del-rwlock.h~3e6f58ae32c920e9:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/rwlock.h
.del-resource.h~7e8eaa833cc25dca:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/resource.h
.del-ptrace.h~c55079be77b9ee19:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ptrace.h
.del-processor.h~52612a255dfb7cbb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/processor.h
.del-posix_types.h~b6e7c803f3dbab8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/posix_types.h
.del-poll.h~f9b451e3ea9e50c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/poll.h
.del-pgtable.h~43ac63ace2e93820:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/pgtable.h
.del-pgtable-3level.h~abbe18b96121bd83:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/pgtable-3level.h
.del-pgtable-2level.h~8fe0307e54d8bf9b:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/pgtable-2level.h
.del-pgalloc.h~9e75e06aeb89d316:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/pgalloc.h
.del-parport.h~cff09d1bc0f89454:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/parport.h
.del-param.h~471736b770596742:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/param.h
.del-page.h~865cbedbe3bc818e:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/page.h
.del-namei.h~38354dac74ae2dd8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/namei.h
.del-mtrr.h~ea4e1ec9703521e8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mtrr.h
.del-msr.h~a6998ff4f5da0e0c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/msr.h
.del-msgbuf.h~5da37442976489a0:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/msgbuf.h
.del-mpspec.h~381f4baa7d484bfb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mpspec.h
.del-module.h~5a2fa3572f0b6bae:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/module.h
.del-mmx.h~ef22db6d3bb87f3a:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mmx.h
.del-mmu_context.h~9fbf061b3d508d67:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mmu_context.h
.del-mmu.h~ba2b86348e168416:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mmu.h
.del-mman.h~18ee2a138def6b36:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mman.h
.del-mca_dma.h~eddb775e770502cb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mca_dma.h
.del-mc146818rtc.h~c21b56e82a291c22:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/mc146818rtc.h
.del-math_emu.h~4613a62a919e4aa1:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/math_emu.h
.del-locks.h~399a95316c4c9ba7:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/locks.h
.del-linux_logo.h~a388673ba10b8bf8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/linux_logo.h
.del-ldt.h~c03c75bf2fa23f40:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ldt.h
.del-kmap_types.h~eed873e2f55dcd50:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/kmap_types.h
.del-keyboard.h~3d6d63ef29bf066c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/keyboard.h
.del-kdbprivate.h~8d8ff2e38b419e4c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/kdbprivate.h
.del-kdb.h~1981de7db9b5d353:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/kdb.h
.del-irq.h~4702eca4cd45e793:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/irq.h
.del-ipcbuf.h~f3ed215ace7ac98f:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ipcbuf.h
.del-ipc.h~8e9498e43aadf144:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ipc.h
.del-ioctls.h~263229b882e93cfd:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ioctls.h
.del-ioctl.h~bac00725b5ef0269:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ioctl.h
.del-io_apic.h~d3ebb23a7540d727:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/io_apic.h
.del-io.h~28def6bcf143a288:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/io.h
.del-init.h~f94c9cf325ec8a73:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/init.h
.del-ide.h~1f18b51858f7de58:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/ide.h
.del-i387.h~a09953497f47e974:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/i387.h
.del-hypervisor.h~d2b860c8a01e7b7d:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/hypervisor.h
.del-hypervisor-ifs~7df8ec9215cf9987:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/hypervisor-ifs
.del-hw_irq.h~85b1e98ab3922232:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/hw_irq.h
.del-highmem.h~961c664eb3006cf6:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/highmem.h
.del-hdreg.h~af3fea048084de8c:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/hdreg.h
.del-hardirq.h~b78749db9e13d06:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/hardirq.h
.del-floppy.h~fc1f18b688d0a155:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/floppy.h
.del-fixmap.h~63fec5045e83d303:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/fixmap.h
.del-fcntl.h~5e345023494b641:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/fcntl.h
.del-errno.h~2d307a9167d276be:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/errno.h
.del-elf.h~5b4118314cd7dda8:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/elf.h
.del-dma.h~bfdf9bdb575308fb:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/dma.h
.del-div64.h~e6438de5f5adcdad:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/div64.h
.del-desc.h~b339bfef4b0848b3:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/desc.h
.del-delay.h~4f5c1f98fef9f480:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/delay.h
.del-debugreg.h~94ad0b2f7ce81945:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/debugreg.h
.del-current.h~4693f192fd42b4a6:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/current.h
.del-cpufeature.h~9ee68ee4f8b525fd:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/cpufeature.h
.del-checksum.h~db4bcfc8958c5d3f:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/checksum.h
.del-cache.h~64626a79a0712d70:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/cache.h
.del-byteorder.h~404697d4e47c3345:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/byteorder.h
.del-bugs.h~df29bf2b4f74ccaf:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/bugs.h
.del-boot.h~c7462d481f4a9:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/boot.h
.del-bitops.h~ef7ea34f8a17ed86:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/bitops.h
.del-atomic.h~55cde2d93d09526:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/atomic.h
.del-apicdef.h~4ce7611333e9d1fc:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/apicdef.h
.del-usercopy.c~b60ef441a832ff84:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/usercopy.c
.del-tty_io.c~b7ee058bd0b4d969:
Delete: old/xenolinux-2.4.16-sparse/drivers/char/tty_io.c
.del-traps.c~58f6978ca3914806:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/traps.c
.del-time.c~8772141ba7a5b7be:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/time.c
.del-sys_i386.c~f84bd504c2085dda:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/sys_i386.c
.del-strstr.c~e80f16ebdccc4062:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/strstr.c
.del-signal.c~45454d7374cce0a1:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/signal.c
.del-setup.c~6f22e121db6f1bc:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c
.del-semaphore.c~3e7a2194beb1c8e4:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/semaphore.c
.del-rd.c~99ae381b254bd356:
Delete: old/xenolinux-2.4.16-sparse/drivers/block/rd.c
.del-ptrace.c~8cb5d0b722ab58b9:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/ptrace.c
.del-process.c~ab23652fb4106ce3:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/process.c
.del-old-checksum.c~c3dfe224f68ed131:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/old-checksum.c
.del-mmx.c~3f27e7b4c5f3d68d:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/mmx.c
.del-mmu_context.c~ef75b8e1f894e729:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/mmu_context.c
.del-memcpy.c~91d0cb7e4e922f6e:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/memcpy.c
.del-ll_rw_blk.c~2c64b7fc36db523:
Delete: old/xenolinux-2.4.16-sparse/drivers/block/ll_rw_blk.c
.del-ldt.c~102d26cc1b63c830:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/ldt.c
.del-irq.c~2bd9b09d889fd6b8:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/irq.c
.del-ioport.c~2d86d4fbba2e2583:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/ioport.c
.del-iodebug.c~982cc58799104651:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/iodebug.c
.del-init_task.c~53258077ed40d6be:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/init_task.c
.del-init.c~3693c99014d6fc0d:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/init.c
.del-i387.c~571a2fa27676375:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/i387.c
.del-i386_ksyms.c~68a55ed15a69598:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/i386_ksyms.c
.del-hypervisor.c~a227c7d0b6a5fd42:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/hypervisor.c
.del-getuser.S~1ef189b582390381:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/getuser.S
.del-get_unmapped_area.c~3ad7561469aabec:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/get_unmapped_area.c
.del-fault.c~4f5a4a1859484525:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/fault.c
.del-extable.c~b98087717f427f26:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/extable.c
.del-exec.c~2557f6564ffdb2e0:
Delete: old/xenolinux-2.4.16-sparse/fs/exec.c
.del-delay.c~bddd92dcfafdf5ce:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/delay.c
.del-dec_and_lock.c~5ac45f1c3a6593c:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/dec_and_lock.c
.del-checksum.S~be8f8ce2d8964249:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/checksum.S
.del-apic.h~7e52954d00c0c4f:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/apic.h
.del-a.out.h~7ace48e4361e6b64:
Delete: old/xenolinux-2.4.16-sparse/include/asm-xeno/a.out.h
.del-Makefile~92a08e51252c8752:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/lib/Makefile
.del-Makefile~4b457be6621a5d5a:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/mm/Makefile
.del-Config.in~e79aa726643e8d8f:
Delete: old/xenolinux-2.4.16-sparse/drivers/block/Config.in
.del-xl_block_test.c~aac5669d8f638637:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block_test.c
.del-xl_block.c~cee1f87e3b5f99a:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/xl_block.c
.del-vmlinux.lds~95fa124a7440e17f:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/vmlinux.lds
.del-vfr.c~32830c0144380827:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/vfr.c
.del-network.c~cc961aaabe0a0a77:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/network.c
.del-mk~196fb97e64c3e303:
Delete: old/xenolinux-2.4.16-sparse/mk
.del-hypervisor.c~78a3960ab18cdbd5:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/hypervisor.c
.del-head.S~7976f74358c43bf7:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/head.S
.del-entry.S~126fc1af28caab2f:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/entry.S
.del-dom0_ops.h~ebc6f2ba40efd4f8:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_ops.h
.del-dom0_memory.c~89a290b73b42dafb:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_memory.c
.del-dom0_core.c~b6447635a1dff297:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_core.c
.del-dom0_block.c~56aa20e79fb98f4a:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/dom0_block.c
.del-defconfig~4e50d7fc220d1aab:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/defconfig
.del-console.c~de0ee868d96d8dbe:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/console/console.c
.del-config.in~4afe788e4691d222:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/config.in
.del-Makefile~fda4420ca7a5c777:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/dom0/Makefile
.del-Makefile~d7ea62ca90003f31:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/boot/Makefile
.del-Makefile~c6614e5f6a40fe8:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/console/Makefile
.del-Makefile~8f946627850d08:
Delete: old/xenolinux-2.4.16-sparse/Makefile
.del-Makefile~4b0def0c8c803698:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/block/Makefile
.del-Makefile~40bc4fd761c2e3e4:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/Makefile
.del-Makefile~225ee771b0fb73fa:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/kernel/Makefile
.del-Makefile~1d57425ac7aac33:
Delete: old/xenolinux-2.4.16-sparse/arch/xeno/drivers/network/Makefile
Diffstat (limited to 'old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c')
-rw-r--r-- | old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c | 996 |
1 files changed, 0 insertions, 996 deletions
diff --git a/old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c b/old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c deleted file mode 100644 index 979deacf5a..0000000000 --- a/old/xenolinux-2.4.16-sparse/arch/xeno/kernel/setup.c +++ /dev/null @@ -1,996 +0,0 @@ -/* - * linux/arch/i386/kernel/setup.c - * - * Copyright (C) 1995 Linus Torvalds - */ - -/* - * This file handles the architecture-dependent parts of initialization - */ - -#include <linux/errno.h> -#include <linux/sched.h> -#include <linux/kernel.h> -#include <linux/mm.h> -#include <linux/stddef.h> -#include <linux/unistd.h> -#include <linux/ptrace.h> -#include <linux/slab.h> -#include <linux/user.h> -#include <linux/a.out.h> -#include <linux/tty.h> -#include <linux/ioport.h> -#include <linux/delay.h> -#include <linux/config.h> -#include <linux/init.h> -#include <linux/apm_bios.h> -#ifdef CONFIG_BLK_DEV_RAM -#include <linux/blk.h> -#endif -#include <linux/highmem.h> -#include <linux/bootmem.h> -#include <linux/seq_file.h> -#include <asm/processor.h> -#include <linux/console.h> -#include <asm/mtrr.h> -#include <asm/uaccess.h> -#include <asm/system.h> -#include <asm/io.h> -#include <asm/smp.h> -#include <asm/msr.h> -#include <asm/desc.h> -#include <asm/dma.h> -#include <asm/mpspec.h> -#include <asm/mmu_context.h> -#include <asm/hypervisor.h> - -shared_info_t *HYPERVISOR_shared_info; - -unsigned long *phys_to_machine_mapping; - -/* - * Machine setup.. - */ - -char ignore_irq13; /* set if exception 16 works */ -struct cpuinfo_x86 boot_cpu_data = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; - -unsigned long mmu_cr4_features; - -/* - * Bus types .. - */ -#ifdef CONFIG_EISA -int EISA_bus; -#endif -int MCA_bus; - -/* for MCA, but anyone else can use it if they want */ -unsigned int machine_id; -unsigned int machine_submodel_id; -unsigned int BIOS_revision; -unsigned int mca_pentium_flag; - -/* For PCI or other memory-mapped resources */ -unsigned long pci_mem_start = 0x10000000; - -/* - * Setup options - */ -struct drive_info_struct { char dummy[32]; } drive_info; -struct screen_info screen_info; -struct apm_info apm_info; -struct sys_desc_table_struct { - unsigned short length; - unsigned char table[0]; -}; - -unsigned char aux_device_present; - -extern int root_mountflags; -extern char _text, _etext, _edata, _end; - -int enable_acpi_smp_table; - -/* Raw start-of-day parameters from the hypervisor. */ -union start_info_union start_info_union; - -#define COMMAND_LINE_SIZE 256 -static char command_line[COMMAND_LINE_SIZE]; -char saved_command_line[COMMAND_LINE_SIZE]; - -static void __init parse_mem_cmdline (char ** cmdline_p) -{ - char c = ' ', *to = command_line, *from = saved_command_line; - int len = 0; - - /* Save unparsed command line copy for /proc/cmdline */ - memcpy(saved_command_line, start_info.cmd_line, COMMAND_LINE_SIZE); - saved_command_line[COMMAND_LINE_SIZE-1] = '\0'; - - for (;;) { - /* - * "mem=nopentium" disables the 4MB page tables. - * "mem=XXX[kKmM]" defines a memory region from HIGH_MEM - * to <mem>, overriding the bios size. - * "mem=XXX[KkmM]@XXX[KkmM]" defines a memory region from - * <start> to <start>+<mem>, overriding the bios size. - */ - if (c == ' ' && !memcmp(from, "mem=", 4)) { - if (to != command_line) - to--; - if (!memcmp(from+4, "nopentium", 9)) { - from += 9+4; - } else if (!memcmp(from+4, "exactmap", 8)) { - from += 8+4; - } else { - (void)memparse(from+4, &from); - if (*from == '@') - (void)memparse(from+1, &from); - } - } - - c = *(from++); - if (!c) - break; - if (COMMAND_LINE_SIZE <= ++len) - break; - *(to++) = c; - } - *to = '\0'; - *cmdline_p = command_line; -} - -void __init setup_arch(char **cmdline_p) -{ - unsigned long start_pfn, max_pfn, max_low_pfn; - unsigned long bootmap_size; - unsigned long i; - - extern void hypervisor_callback(void); - extern void failsafe_callback(void); - - extern unsigned long cpu0_pte_quicklist[]; - extern unsigned long cpu0_pgd_quicklist[]; - - HYPERVISOR_shared_info->event_address = - (unsigned long)hypervisor_callback; - HYPERVISOR_shared_info->failsafe_address = - (unsigned long)failsafe_callback; - - boot_cpu_data.pgd_quick = cpu0_pgd_quicklist; - boot_cpu_data.pte_quick = cpu0_pte_quicklist; - - ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); - memset(&drive_info, 0, sizeof(drive_info)); - memset(&screen_info, 0, sizeof(screen_info)); - memset(&apm_info.bios, 0, sizeof(apm_info.bios)); - aux_device_present = 0; - -#ifdef CONFIG_BLK_DEV_RAM - rd_image_start = 0; - rd_prompt = 0; - rd_doload = 0; -#endif - - root_mountflags &= ~MS_RDONLY; - init_mm.start_code = (unsigned long) &_text; - init_mm.end_code = (unsigned long) &_etext; - init_mm.end_data = (unsigned long) &_edata; - init_mm.brk = (unsigned long) &_end; - - parse_mem_cmdline(cmdline_p); - -#define PFN_UP(x) (((x) + PAGE_SIZE-1) >> PAGE_SHIFT) -#define PFN_DOWN(x) ((x) >> PAGE_SHIFT) -#define PFN_PHYS(x) ((x) << PAGE_SHIFT) - -/* - * 128MB for vmalloc and initrd - */ -#define VMALLOC_RESERVE (unsigned long)(128 << 20) -#define MAXMEM (unsigned long)(HYPERVISOR_VIRT_START-PAGE_OFFSET-VMALLOC_RESERVE) -#define MAXMEM_PFN PFN_DOWN(MAXMEM) -#define MAX_NONPAE_PFN (1 << 20) - - /* - * partially used pages are not usable - thus - * we are rounding upwards: - */ -#ifdef CONFIG_BLK_DEV_INITRD - if ( start_info.mod_start ) - start_pfn = PFN_UP(__pa(start_info.mod_start + start_info.mod_len)); - else -#endif - start_pfn = PFN_UP(__pa(&_end)); - max_pfn = start_info.nr_pages; - - /* - * Determine low and high memory ranges: - */ - max_low_pfn = max_pfn; - if (max_low_pfn > MAXMEM_PFN) { - max_low_pfn = MAXMEM_PFN; -#ifndef CONFIG_HIGHMEM - /* Maximum memory usable is what is directly addressable */ - printk(KERN_WARNING "Warning only %ldMB will be used.\n", - MAXMEM>>20); - if (max_pfn > MAX_NONPAE_PFN) - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); - else - printk(KERN_WARNING "Use a HIGHMEM enabled kernel.\n"); -#else /* !CONFIG_HIGHMEM */ -#ifndef CONFIG_X86_PAE - if (max_pfn > MAX_NONPAE_PFN) { - max_pfn = MAX_NONPAE_PFN; - printk(KERN_WARNING "Warning only 4GB will be used.\n"); - printk(KERN_WARNING "Use a PAE enabled kernel.\n"); - } -#endif /* !CONFIG_X86_PAE */ -#endif /* !CONFIG_HIGHMEM */ - } - -#ifdef CONFIG_HIGHMEM - highstart_pfn = highend_pfn = max_pfn; - if (max_pfn > MAXMEM_PFN) { - highstart_pfn = MAXMEM_PFN; - printk(KERN_NOTICE "%ldMB HIGHMEM available.\n", - pages_to_mb(highend_pfn - highstart_pfn)); - } -#endif - - /* - * Initialize the boot-time allocator, and free up all RAM. - * Then reserve space for OS image, and the bootmem bitmap. - */ - bootmap_size = init_bootmem(start_pfn, max_low_pfn); - free_bootmem(0, PFN_PHYS(max_low_pfn)); - reserve_bootmem(0, PFN_PHYS(start_pfn) + bootmap_size + PAGE_SIZE-1); - - /* Now reserve space for the hypervisor-provided page tables. */ - { - unsigned long *pgd = (unsigned long *)start_info.pt_base; - unsigned long pte; - int i; - reserve_bootmem(__pa(pgd), PAGE_SIZE); - for ( i = 0; i < (HYPERVISOR_VIRT_START>>22); i++ ) - { - unsigned long pgde = *pgd++; - if ( !(pgde & 1) ) continue; - pte = machine_to_phys(pgde & PAGE_MASK); - reserve_bootmem(pte, PAGE_SIZE); - } - } - cur_pgd = init_mm.pgd = (pgd_t *)start_info.pt_base; - - /* Now initialise the physical->machine mapping table. */ - phys_to_machine_mapping = alloc_bootmem(max_pfn * sizeof(unsigned long)); - for ( i = 0; i < max_pfn; i++ ) - { - unsigned long pgde, *ppte; - unsigned long pfn = i + (PAGE_OFFSET >> PAGE_SHIFT); - pgde = *((unsigned long *)start_info.pt_base + (pfn >> 10)); - ppte = (unsigned long *)machine_to_phys(pgde & PAGE_MASK) + (pfn&1023); - phys_to_machine_mapping[i] = - (*(unsigned long *)__va(ppte)) >> PAGE_SHIFT; - } - -#ifdef CONFIG_BLK_DEV_INITRD - if (start_info.mod_start) { - if ((__pa(start_info.mod_start) + start_info.mod_len) <= - (max_low_pfn << PAGE_SHIFT)) { - initrd_start = start_info.mod_start; - initrd_end = initrd_start + start_info.mod_len; - initrd_below_start_ok = 1; - } - else { - printk(KERN_ERR "initrd extends beyond end of memory " - "(0x%08lx > 0x%08lx)\ndisabling initrd\n", - __pa(start_info.mod_start) + start_info.mod_len, - max_low_pfn << PAGE_SHIFT); - initrd_start = 0; - } - } -#endif - - paging_init(); -} - -static int cachesize_override __initdata = -1; -static int __init cachesize_setup(char *str) -{ - get_option (&str, &cachesize_override); - return 1; -} -__setup("cachesize=", cachesize_setup); - - -static int __init get_model_name(struct cpuinfo_x86 *c) -{ - unsigned int *v; - char *p, *q; - - if (cpuid_eax(0x80000000) < 0x80000004) - return 0; - - v = (unsigned int *) c->x86_model_id; - cpuid(0x80000002, &v[0], &v[1], &v[2], &v[3]); - cpuid(0x80000003, &v[4], &v[5], &v[6], &v[7]); - cpuid(0x80000004, &v[8], &v[9], &v[10], &v[11]); - c->x86_model_id[48] = 0; - - /* Intel chips right-justify this string for some dumb reason; - undo that brain damage */ - p = q = &c->x86_model_id[0]; - while ( *p == ' ' ) - p++; - if ( p != q ) { - while ( *p ) - *q++ = *p++; - while ( q <= &c->x86_model_id[48] ) - *q++ = '\0'; /* Zero-pad the rest */ - } - - return 1; -} - - -static void __init display_cacheinfo(struct cpuinfo_x86 *c) -{ - unsigned int n, dummy, ecx, edx, l2size; - - n = cpuid_eax(0x80000000); - - if (n >= 0x80000005) { - cpuid(0x80000005, &dummy, &dummy, &ecx, &edx); - printk(KERN_INFO "CPU: L1 I Cache: %dK (%d bytes/line), D cache %dK (%d bytes/line)\n", - edx>>24, edx&0xFF, ecx>>24, ecx&0xFF); - c->x86_cache_size=(ecx>>24)+(edx>>24); - } - - if (n < 0x80000006) /* Some chips just has a large L1. */ - return; - - ecx = cpuid_ecx(0x80000006); - l2size = ecx >> 16; - - /* AMD errata T13 (order #21922) */ - if ((c->x86_vendor == X86_VENDOR_AMD) && (c->x86 == 6)) { - if (c->x86_model == 3 && c->x86_mask == 0) /* Duron Rev A0 */ - l2size = 64; - if (c->x86_model == 4 && - (c->x86_mask==0 || c->x86_mask==1)) /* Tbird rev A1/A2 */ - l2size = 256; - } - - /* Intel PIII Tualatin. This comes in two flavours. - * One has 256kb of cache, the other 512. We have no way - * to determine which, so we use a boottime override - * for the 512kb model, and assume 256 otherwise. - */ - if ((c->x86_vendor == X86_VENDOR_INTEL) && (c->x86 == 6) && - (c->x86_model == 11) && (l2size == 0)) - l2size = 256; - - /* VIA C3 CPUs (670-68F) need further shifting. */ - if (c->x86_vendor == X86_VENDOR_CENTAUR && (c->x86 == 6) && - ((c->x86_model == 7) || (c->x86_model == 8))) { - l2size = l2size >> 8; - } - - /* Allow user to override all this if necessary. */ - if (cachesize_override != -1) - l2size = cachesize_override; - - if ( l2size == 0 ) - return; /* Again, no L2 cache is possible */ - - c->x86_cache_size = l2size; - - printk(KERN_INFO "CPU: L2 Cache: %dK (%d bytes/line)\n", - l2size, ecx & 0xFF); -} - - -static int __init init_amd(struct cpuinfo_x86 *c) -{ - int r; - - /* Bit 31 in normal CPUID used for nonstandard 3DNow ID; - 3DNow is IDd by bit 31 in extended CPUID (1*32+31) anyway */ - clear_bit(0*32+31, &c->x86_capability); - - r = get_model_name(c); - - switch(c->x86) - { - case 6: /* An Athlon/Duron. We can trust the BIOS probably */ - break; - default: - panic("Unsupported AMD processor\n"); - } - - display_cacheinfo(c); - return r; -} - - -static void __init init_intel(struct cpuinfo_x86 *c) -{ - char *p = NULL; - unsigned int l1i = 0, l1d = 0, l2 = 0, l3 = 0; /* Cache sizes */ - - if (c->cpuid_level > 1) { - /* supports eax=2 call */ - int i, j, n; - int regs[4]; - unsigned char *dp = (unsigned char *)regs; - - /* Number of times to iterate */ - n = cpuid_eax(2) & 0xFF; - - for ( i = 0 ; i < n ; i++ ) { - cpuid(2, ®s[0], ®s[1], ®s[2], ®s[3]); - - /* If bit 31 is set, this is an unknown format */ - for ( j = 0 ; j < 3 ; j++ ) { - if ( regs[j] < 0 ) regs[j] = 0; - } - - /* Byte 0 is level count, not a descriptor */ - for ( j = 1 ; j < 16 ; j++ ) { - unsigned char des = dp[j]; - unsigned char dl, dh; - unsigned int cs; - - dh = des >> 4; - dl = des & 0x0F; - - /* Black magic... */ - - switch ( dh ) - { - case 0: - switch ( dl ) { - case 6: - /* L1 I cache */ - l1i += 8; - break; - case 8: - /* L1 I cache */ - l1i += 16; - break; - case 10: - /* L1 D cache */ - l1d += 8; - break; - case 12: - /* L1 D cache */ - l1d += 16; - break; - default:; - /* TLB, or unknown */ - } - break; - case 2: - if ( dl ) { - /* L3 cache */ - cs = (dl-1) << 9; - l3 += cs; - } - break; - case 4: - if ( c->x86 > 6 && dl ) { - /* P4 family */ - /* L3 cache */ - cs = 128 << (dl-1); - l3 += cs; - break; - } - /* else same as 8 - fall through */ - case 8: - if ( dl ) { - /* L2 cache */ - cs = 128 << (dl-1); - l2 += cs; - } - break; - case 6: - if (dl > 5) { - /* L1 D cache */ - cs = 8<<(dl-6); - l1d += cs; - } - break; - case 7: - if ( dl >= 8 ) - { - /* L2 cache */ - cs = 64<<(dl-8); - l2 += cs; - } else { - /* L0 I cache, count as L1 */ - cs = dl ? (16 << (dl-1)) : 12; - l1i += cs; - } - break; - default: - /* TLB, or something else we don't know about */ - break; - } - } - } - if ( l1i || l1d ) - printk(KERN_INFO "CPU: L1 I cache: %dK, L1 D cache: %dK\n", - l1i, l1d); - if ( l2 ) - printk(KERN_INFO "CPU: L2 cache: %dK\n", l2); - if ( l3 ) - printk(KERN_INFO "CPU: L3 cache: %dK\n", l3); - - /* - * This assumes the L3 cache is shared; it typically lives in - * the northbridge. The L1 caches are included by the L2 - * cache, and so should not be included for the purpose of - * SMP switching weights. - */ - c->x86_cache_size = l2 ? l2 : (l1i+l1d); - } - - /* SEP CPUID bug: Pentium Pro reports SEP but doesn't have it */ - if ( c->x86 == 6 && c->x86_model < 3 && c->x86_mask < 3 ) - clear_bit(X86_FEATURE_SEP, &c->x86_capability); - - /* Names for the Pentium II/Celeron processors - detectable only by also checking the cache size. - Dixon is NOT a Celeron. */ - if (c->x86 == 6) { - switch (c->x86_model) { - case 5: - if (l2 == 0) - p = "Celeron (Covington)"; - if (l2 == 256) - p = "Mobile Pentium II (Dixon)"; - break; - - case 6: - if (l2 == 128) - p = "Celeron (Mendocino)"; - break; - - case 8: - if (l2 == 128) - p = "Celeron (Coppermine)"; - break; - } - } - - if ( p ) - strcpy(c->x86_model_id, p); -} - -void __init get_cpu_vendor(struct cpuinfo_x86 *c) -{ - char *v = c->x86_vendor_id; - - if (!strcmp(v, "GenuineIntel")) - c->x86_vendor = X86_VENDOR_INTEL; - else if (!strcmp(v, "AuthenticAMD")) - c->x86_vendor = X86_VENDOR_AMD; - else - c->x86_vendor = X86_VENDOR_UNKNOWN; -} - -struct cpu_model_info { - int vendor; - int family; - char *model_names[16]; -}; - -/* Naming convention should be: <Name> [(<Codename>)] */ -/* This table only is used unless init_<vendor>() below doesn't set it; */ -/* in particular, if CPUID levels 0x80000002..4 are supported, this isn't used */ -static struct cpu_model_info cpu_models[] __initdata = { - { X86_VENDOR_INTEL, 6, - { "Pentium Pro A-step", "Pentium Pro", NULL, "Pentium II (Klamath)", - NULL, "Pentium II (Deschutes)", "Mobile Pentium II", - "Pentium III (Katmai)", "Pentium III (Coppermine)", NULL, - "Pentium III (Cascades)", NULL, NULL, NULL, NULL }}, - { X86_VENDOR_AMD, 6, /* Is this this really necessary?? */ - { "Athlon", "Athlon", - "Athlon", NULL, "Athlon", NULL, - NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL }} -}; - -/* Look up CPU names by table lookup. */ -static char __init *table_lookup_model(struct cpuinfo_x86 *c) -{ - struct cpu_model_info *info = cpu_models; - int i; - - if ( c->x86_model >= 16 ) - return NULL; /* Range check */ - - for ( i = 0 ; i < sizeof(cpu_models)/sizeof(struct cpu_model_info) ; i++ ) { - if ( info->vendor == c->x86_vendor && - info->family == c->x86 ) { - return info->model_names[c->x86_model]; - } - info++; - } - return NULL; /* Not found */ -} - - - -/* Standard macro to see if a specific flag is changeable */ -static inline int flag_is_changeable_p(u32 flag) -{ - u32 f1, f2; - - asm("pushfl\n\t" - "pushfl\n\t" - "popl %0\n\t" - "movl %0,%1\n\t" - "xorl %2,%0\n\t" - "pushl %0\n\t" - "popfl\n\t" - "pushfl\n\t" - "popl %0\n\t" - "popfl\n\t" - : "=&r" (f1), "=&r" (f2) - : "ir" (flag)); - - return ((f1^f2) & flag) != 0; -} - - -/* Probe for the CPUID instruction */ -static int __init have_cpuid_p(void) -{ - return flag_is_changeable_p(X86_EFLAGS_ID); -} - - - -/* - * This does the hard work of actually picking apart the CPU stuff... - */ -void __init identify_cpu(struct cpuinfo_x86 *c) -{ - int junk, i; - u32 xlvl, tfms; - - c->loops_per_jiffy = loops_per_jiffy; - c->x86_cache_size = -1; - c->x86_vendor = X86_VENDOR_UNKNOWN; - c->cpuid_level = -1; /* CPUID not detected */ - c->x86_model = c->x86_mask = 0; /* So far unknown... */ - c->x86_vendor_id[0] = '\0'; /* Unset */ - c->x86_model_id[0] = '\0'; /* Unset */ - memset(&c->x86_capability, 0, sizeof c->x86_capability); - c->hard_math = 1; - - if ( !have_cpuid_p() ) { - panic("Processor must support CPUID\n"); - } else { - /* CPU does have CPUID */ - - /* Get vendor name */ - cpuid(0x00000000, &c->cpuid_level, - (int *)&c->x86_vendor_id[0], - (int *)&c->x86_vendor_id[8], - (int *)&c->x86_vendor_id[4]); - - get_cpu_vendor(c); - /* Initialize the standard set of capabilities */ - /* Note that the vendor-specific code below might override */ - - /* Intel-defined flags: level 0x00000001 */ - if ( c->cpuid_level >= 0x00000001 ) { - cpuid(0x00000001, &tfms, &junk, &junk, - &c->x86_capability[0]); - c->x86 = (tfms >> 8) & 15; - c->x86_model = (tfms >> 4) & 15; - c->x86_mask = tfms & 15; - } else { - /* Have CPUID level 0 only - unheard of */ - c->x86 = 4; - } - - /* AMD-defined flags: level 0x80000001 */ - xlvl = cpuid_eax(0x80000000); - if ( (xlvl & 0xffff0000) == 0x80000000 ) { - if ( xlvl >= 0x80000001 ) - c->x86_capability[1] = cpuid_edx(0x80000001); - if ( xlvl >= 0x80000004 ) - get_model_name(c); /* Default name */ - } - - /* Transmeta-defined flags: level 0x80860001 */ - xlvl = cpuid_eax(0x80860000); - if ( (xlvl & 0xffff0000) == 0x80860000 ) { - if ( xlvl >= 0x80860001 ) - c->x86_capability[2] = cpuid_edx(0x80860001); - } - } - - printk(KERN_DEBUG "CPU: Before vendor init, caps: %08x %08x %08x, vendor = %d\n", - c->x86_capability[0], - c->x86_capability[1], - c->x86_capability[2], - c->x86_vendor); - - /* - * Vendor-specific initialization. In this section we - * canonicalize the feature flags, meaning if there are - * features a certain CPU supports which CPUID doesn't - * tell us, CPUID claiming incorrect flags, or other bugs, - * we handle them here. - * - * At the end of this section, c->x86_capability better - * indicate the features this CPU genuinely supports! - */ - switch ( c->x86_vendor ) { - case X86_VENDOR_AMD: - init_amd(c); - break; - - case X86_VENDOR_INTEL: - init_intel(c); - break; - - default: - panic("Unsupported CPU vendor\n"); - } - - printk(KERN_DEBUG "CPU: After vendor init, caps: %08x %08x %08x %08x\n", - c->x86_capability[0], - c->x86_capability[1], - c->x86_capability[2], - c->x86_capability[3]); - - - /* If the model name is still unset, do table lookup. */ - if ( !c->x86_model_id[0] ) { - char *p; - p = table_lookup_model(c); - if ( p ) - strcpy(c->x86_model_id, p); - else - /* Last resort... */ - sprintf(c->x86_model_id, "%02x/%02x", - c->x86_vendor, c->x86_model); - } - - /* Now the feature flags better reflect actual CPU features! */ - - printk(KERN_DEBUG "CPU: After generic, caps: %08x %08x %08x %08x\n", - c->x86_capability[0], - c->x86_capability[1], - c->x86_capability[2], - c->x86_capability[3]); - - /* - * On SMP, boot_cpu_data holds the common feature set between - * all CPUs; so make sure that we indicate which features are - * common between the CPUs. The first time this routine gets - * executed, c == &boot_cpu_data. - */ - if ( c != &boot_cpu_data ) { - /* AND the already accumulated flags with these */ - for ( i = 0 ; i < NCAPINTS ; i++ ) - boot_cpu_data.x86_capability[i] &= c->x86_capability[i]; - } - - printk(KERN_DEBUG "CPU: Common caps: %08x %08x %08x %08x\n", - boot_cpu_data.x86_capability[0], - boot_cpu_data.x86_capability[1], - boot_cpu_data.x86_capability[2], - boot_cpu_data.x86_capability[3]); -} - - -/* These need to match <asm/processor.h> */ -static char *cpu_vendor_names[] __initdata = { - "Intel", "Cyrix", "AMD", "UMC", "NexGen", "Centaur", "Rise", "Transmeta" }; - - -void __init print_cpu_info(struct cpuinfo_x86 *c) -{ - char *vendor = NULL; - - if (c->x86_vendor < sizeof(cpu_vendor_names)/sizeof(char *)) - vendor = cpu_vendor_names[c->x86_vendor]; - else if (c->cpuid_level >= 0) - vendor = c->x86_vendor_id; - - if (vendor && strncmp(c->x86_model_id, vendor, strlen(vendor))) - printk("%s ", vendor); - - if (!c->x86_model_id[0]) - printk("%d86", c->x86); - else - printk("%s", c->x86_model_id); - - if (c->x86_mask || c->cpuid_level >= 0) - printk(" stepping %02x\n", c->x86_mask); - else - printk("\n"); -} - -/* - * Get CPU information for use by the procfs. - */ -static int show_cpuinfo(struct seq_file *m, void *v) -{ - /* - * These flag bits must match the definitions in <asm/cpufeature.h>. - * NULL means this bit is undefined or reserved; either way it doesn't - * have meaning as far as Linux is concerned. Note that it's important - * to realize there is a difference between this table and CPUID -- if - * applications want to get the raw CPUID data, they should access - * /dev/cpu/<cpu_nr>/cpuid instead. - */ - static char *x86_cap_flags[] = { - /* Intel-defined */ - "fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce", - "cx8", "apic", NULL, "sep", "mtrr", "pge", "mca", "cmov", - "pat", "pse36", "pn", "clflush", NULL, "dts", "acpi", "mmx", - "fxsr", "sse", "sse2", "ss", NULL, "tm", "ia64", NULL, - - /* AMD-defined */ - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, "syscall", NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, "mmxext", NULL, - NULL, NULL, NULL, NULL, NULL, "lm", "3dnowext", "3dnow", - - /* Transmeta-defined */ - "recovery", "longrun", NULL, "lrti", NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - - /* Other (Linux-defined) */ - "cxmmx", "k6_mtrr", "cyrix_arr", "centaur_mcr", NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - }; - struct cpuinfo_x86 *c = v; - int i, n = c - cpu_data; - int fpu_exception; - -#ifdef CONFIG_SMP - if (!(cpu_online_map & (1<<n))) - return 0; -#endif - seq_printf(m, "processor\t: %d\n" - "vendor_id\t: %s\n" - "cpu family\t: %d\n" - "model\t\t: %d\n" - "model name\t: %s\n", - n, - c->x86_vendor_id[0] ? c->x86_vendor_id : "unknown", - c->x86, - c->x86_model, - c->x86_model_id[0] ? c->x86_model_id : "unknown"); - - if (c->x86_mask || c->cpuid_level >= 0) - seq_printf(m, "stepping\t: %d\n", c->x86_mask); - else - seq_printf(m, "stepping\t: unknown\n"); - - if ( test_bit(X86_FEATURE_TSC, &c->x86_capability) ) { - seq_printf(m, "cpu MHz\t\t: %lu.%03lu\n", - cpu_khz / 1000, (cpu_khz % 1000)); - } - - /* Cache size */ - if (c->x86_cache_size >= 0) - seq_printf(m, "cache size\t: %d KB\n", c->x86_cache_size); - - /* We use exception 16 if we have hardware math and we've either seen it or the CPU claims it is internal */ - fpu_exception = c->hard_math && (ignore_irq13 || cpu_has_fpu); - seq_printf(m, "fdiv_bug\t: %s\n" - "hlt_bug\t\t: %s\n" - "f00f_bug\t: %s\n" - "coma_bug\t: %s\n" - "fpu\t\t: %s\n" - "fpu_exception\t: %s\n" - "cpuid level\t: %d\n" - "wp\t\t: %s\n" - "flags\t\t:", - c->fdiv_bug ? "yes" : "no", - c->hlt_works_ok ? "no" : "yes", - c->f00f_bug ? "yes" : "no", - c->coma_bug ? "yes" : "no", - c->hard_math ? "yes" : "no", - fpu_exception ? "yes" : "no", - c->cpuid_level, - c->wp_works_ok ? "yes" : "no"); - - for ( i = 0 ; i < 32*NCAPINTS ; i++ ) - if ( test_bit(i, &c->x86_capability) && - x86_cap_flags[i] != NULL ) - seq_printf(m, " %s", x86_cap_flags[i]); - - seq_printf(m, "\nbogomips\t: %lu.%02lu\n\n", - c->loops_per_jiffy/(500000/HZ), - (c->loops_per_jiffy/(5000/HZ)) % 100); - return 0; -} - -static void *c_start(struct seq_file *m, loff_t *pos) -{ - return *pos < NR_CPUS ? cpu_data + *pos : NULL; -} -static void *c_next(struct seq_file *m, void *v, loff_t *pos) -{ - ++*pos; - return c_start(m, pos); -} -static void c_stop(struct seq_file *m, void *v) -{ -} -struct seq_operations cpuinfo_op = { - start: c_start, - next: c_next, - stop: c_stop, - show: show_cpuinfo, -}; - -unsigned long cpu_initialized __initdata = 0; - -/* - * cpu_init() initializes state that is per-CPU. Some data is already - * initialized (naturally) in the bootstrap process, such as the GDT - * and IDT. We reload them nevertheless, this function acts as a - * 'CPU state barrier', nothing should get across. - */ -void __init cpu_init (void) -{ - int nr = smp_processor_id(); - - if (test_and_set_bit(nr, &cpu_initialized)) { - printk(KERN_WARNING "CPU#%d already initialized!\n", nr); - for (;;) __sti(); - } - printk(KERN_INFO "Initializing CPU#%d\n", nr); - - /* - * set up and load the per-CPU TSS and LDT - */ - atomic_inc(&init_mm.mm_count); - current->active_mm = &init_mm; - if(current->mm) - BUG(); - enter_lazy_tlb(&init_mm, current, nr); - - HYPERVISOR_stack_and_ldt_switch(__KERNEL_DS, current->thread.esp0, 0); - - /* Force FPU initialization. */ - current->flags &= ~PF_USEDFPU; - current->used_math = 0; - stts(); -} - - -/****************************************************************************** - * Time-to-die callback handling. - */ - -static void time_to_die(int irq, void *unused, struct pt_regs *regs) -{ - extern void ctrl_alt_del(void); - ctrl_alt_del(); -} - -static int __init setup_death_event(void) -{ - (void)request_irq(_EVENT_DIE, time_to_die, 0, "die", NULL); - return 0; -} - -__initcall(setup_death_event); |