Commit b704882e authored by Tony Luck's avatar Tony Luck

[IA64] Rationalize kernel mode alignment checking

Itanium processors can handle some misaligned data accesses. They
also provide a mode where all such accesses are forced to trap. The
kernel was schizophrenic about use of this mode:

* Base kernel code ran in permissive mode where the only traps
  generated were from those cases that the h/w could not handle.
* Interrupt, syscall and trap code ran in strict mode where all
  unaligned accesses caused traps to the 0x5a00 unaligned reference
  vector.

Use strict alignment checking throughout the kernel, but make
sure that we continue to let user mode use more relaxed mode
as the default.
Signed-off-by: default avatarTony Luck <tony.luck@intel.com>
parent ee2f6cc7
...@@ -499,6 +499,7 @@ GLOBAL_ENTRY(prefetch_stack) ...@@ -499,6 +499,7 @@ GLOBAL_ENTRY(prefetch_stack)
END(prefetch_stack) END(prefetch_stack)
GLOBAL_ENTRY(kernel_execve) GLOBAL_ENTRY(kernel_execve)
rum psr.ac
mov r15=__NR_execve // put syscall number in place mov r15=__NR_execve // put syscall number in place
break __BREAK_SYSCALL break __BREAK_SYSCALL
br.ret.sptk.many rp br.ret.sptk.many rp
......
...@@ -260,7 +260,7 @@ start_ap: ...@@ -260,7 +260,7 @@ start_ap:
* Switch into virtual mode: * Switch into virtual mode:
*/ */
movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH|IA64_PSR_BN \ movl r16=(IA64_PSR_IT|IA64_PSR_IC|IA64_PSR_DT|IA64_PSR_RT|IA64_PSR_DFH|IA64_PSR_BN \
|IA64_PSR_DI) |IA64_PSR_DI|IA64_PSR_AC)
;; ;;
mov cr.ipsr=r16 mov cr.ipsr=r16
movl r17=1f movl r17=1f
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment