xtensa: clean up PTE flags and fix TLB multihit exceptions

- rename access rights bits to _PAGE_RIGHTS_* and cache attributes bits
  to _PAGE_CA_*;
- introduce software 'page present' bit to distinguish pte_none from
  present PTE with PROT_NONE flag; update pte_present, pte_none and
  pte_file definitions accordingly;
- update swap and file mapping PTE extraction/composition macros for new
  PTE fields layout;
- set _PAGE_USER in the pte_clear to avoid having TLB multihit
  exceptions (see thread at
  http://lists.linux-xtensa.org/pipermail/linux-xtensa/Week-of-Mon-20130401/000918.html
  http://lists.linux-xtensa.org/pipermail/linux-xtensa/Week-of-Mon-20130408/thread.html
  for more details);

Signed-off-by: Piet Delaney <piet.delaney@gmail.com>
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
xtensa: flush TLB entries for pages of non-current mm correctly

Sometimes under high memory pressure one process gets a page of another
process, which manifests itself with an invalid instruction exception.

This happens because flush_tlb_page fails to clear TLB entries when
called with vma that does not belong to current mm, because it does not
set RASID appropriately. When page reclaiming mechanism swaps physical
pages out replacing their PTEs with none or swap PTEs, it calls
flush_tlb_page. Later physical page may be reused elsewhere, but the
stale TLB mapping still refers to it, allowing process that owned the
mapping to see the new state of that physical page.

Put ASID of the mm that owns vma to the RASID to fix that issue.
Also replace otherwise meaningless local_save_flags with local_irq_save.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
xtensa: check TLB sanity on return to userspace

- check that user TLB mappings correspond to the current page table;
- check that TLB mapping VPN is in the kernel/user address range
  in accordance with its ASID.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>