Uprobes executes the original instruction at a probed location out ofline. For this, we allocate a page (per mm) upon the first uprobe hit,in the process' user address space, divide it into slots that are usedto store the actual instructions to be singlestepped.

Care is taken to ensure that the allocation is in an unmapped area asclose to the top of the user address space as possible, with appropriatepermission settings to keep selinux like frameworks happy.

Upon a uprobe hit, a free slot is acquired, and is released after thesinglestep completes.

[ Folded a fix for build issue on powerpc fixed and reported by StephenRothwell]