Hi Horseriver, On Sun, Feb 24, 2013 at 7:26 AM, horseriver <horserivers@xxxxxxxxx> wrote: > On Sun, Feb 24, 2013 at 04:00:37PM +0700, Mulyadi Santosa wrote: >> On Sat, Feb 23, 2013 at 6:45 AM, horseriver <horserivers@xxxxxxxxx> wrote: >> > hi: >> > >> > I have built vmlinux at the top dir of kernel source ,then I use objdump to look into >> > its section information.I find the statup_32 which is the start routine of kernel , >> > locats at 0xc0100000. I know the 0x100000 is the defined address for locating >> > protect-mode code .But which I can not understand is the 0xc prefix .where does it come from? >> >> If my guess is right, that's because kernel mode code start at >> 0xc000000 a.k.a a bit above 3 GiB on x86 32 bit machine > > I have find this answer . > It is defined in lds script file . > > here is the code : > SECTIONS > { > . = 0xC0000000 + 0x100000; > /* read-only */ > _text = .; /* Text and read-only data */ > > > why use 0xC0000000 as its start ? why not just use 0x100000 only ? > if use 0xC0000000,every linked symbole will be prefixed by 0xc , what is the purpose ? Usually, user kernel space split is 3G:1G. ie 1G for kernel space. And this starts from 0xC000_0000 till 0xFFFF_FFFF All the address below 0xC000_0000(ie 3G from 0x0 to 0xBFFF_FFFF) is used for user space. Thanks, Arun > > thanks! > > > > -- >> regards, >> >> Mulyadi Santosa >> Freelance Linux trainer and consultant >> >> blog: the-hydra.blogspot.com >> training: mulyaditraining.blogspot.com > > _______________________________________________ > Kernelnewbies mailing list > Kernelnewbies@xxxxxxxxxxxxxxxxx > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies