Thank you very much for your help.
I tried with it, but I have still some problems.
It seems to work well, ... but it falls into some unstable state.
It recognized 512M correctly.
And it always run perfectly before multiuser mode using nfs.
But when entering into multiuser mode with "exit" command under # prompt,
it stops a ceratin point, it's not fixed point.
Once it stopped after "Checking for core dump...", and once after
"savecore: no core dump (no dumpdev)" and
once it stopped at displaying "Copyright ...".
I modified sandpoint/include/vmparam.h as
"#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2 * SEGMENT_LENGTH - 1)"
and add upper 256M BAT mapping in sandpoint/machdep.c just as below
/* map the upper 256M area */
battable[3].batl = BATL(0x10000000, BAT_M, BAT_PP_RW);
battable[3].batu = BATU(0x10000000, BAT_BL_256M, BAT_Vs);
asm volatile ("mtibatl 3,%0; mtibatu 3,%1"
:: "r"(battable[3].batl), "r"(battable[3].batu));
asm volatile ("mtdbatl 3,%0; mtdbatu 3,%1"
:: "r"(battable[3].batl), "r"(battable[3].batu));
Under all these changes, 256M works perfect as before.