Here is a patch to xcscope to make you browse kernel code easier.
Two changes:
1. xcscope dose not support cscope "-k" (kernel mode) option, this patch add a variable named "cscope-kernel-mode" to xcscope, if it's non-nil, the "-k" option will be passed to cscope to prevent include "/usr/include" in #include files.
2. xcscope overwrite cscope.files everytime it builds index, even you had generated a cscope.files file which exclude arch-related source, driver source. this patch add a variable named "cscope-reuse-list-file" to xcscope, if it's non-nil, the xcscope will try to reuse cscope.files if it's exists and readable, instead of re-generating and overwriting this file.
Usage:
1. apply this patch to xcscope
2. add lines below to .emacs, you know:
(setq cscope-kernel-mode t)
(setq cscope-reuse-list-file t)
3.generate list file:
export LNX=/home/seven/linux-2.6/linux-2.6-2.6.32
find $LNX \
-path "$LNX/arch/*" ! -path "$LNX/arch/x86*" -prune -o \
-path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \
-path "$LNX/tmp*" -prune -o \
-path "$LNX/Documentation*" -prune -o \
-path "$LNX/scripts*" -prune -o \
-path "$LNX/drivers*" -prune -o \
-name "*.[chxsS]" -print > $LNX/cscope.files
4. C-c s I or (cscope-index-files) rebuild index