In bad_execv.c , why is 0x40000000 considered an INVALID_PTR ?

Why is 0x40000000 an illegal address for badcall_execv.c . It is passed as a user char pointer to the kernel, and it falls within the ranges for the userspace memory. Why is it illegal then ?