Skip to contentSkip to conversation

Don't alloc empty frame in ia64_switch_mode_phys

PATCH In review Zou Nan hai 2 participants 3 messages Jul 25, 2006 – Jul 26, 2006

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Don't alloc empty frame in ia64_switch_mode_phys

I think ia64_switch_mode_phys and ia64_switch_mode_virt does not need to alloc an empty frame.
An empty frame is required by loadrs but flushrs does not need that.

arch/ia64/kernel/head.S +0 -2
@@ -853,7 +853,6 @@ END(__ia64_init_fpu)
  */
 GLOBAL_ENTRY(ia64_switch_mode_phys)
  {
-	alloc r2=ar.pfs,0,0,0,0
 	rsm psr.i | psr.ic		// disable interrupts and interrupt collection
 	mov r15=ip
  }
@@ -902,7 +901,6 @@ END(ia64_switch_mode_phys)
  */
 GLOBAL_ENTRY(ia64_switch_mode_virt)
  {
-	alloc r2=ar.pfs,0,0,0,0
 	rsm psr.i | psr.ic		// disable interrupts and interrupt collection
 	mov r15=ip
  }
#1 lore raw

Zou Nan hai wrote on Tuesday, July 25, 2006 4:37 PM

Quoted 4 lines

I think ia64_switch_mode_phys and ia64_switch_mode_virt does not need to alloc an empty frame.
An empty frame is required by loadrs but flushrs does not need that.

This patch would make your previous "Do not assume output registers be reservered" unnecessary, isn't it? It will automatically solve the problem you are trying to fix in previous patch.

The real issue to me is that ia64_switch_mode_phys() creates a zero stack frame before turning off interrupt. If the zero frame alloc instruction is removed, the current register stack frame ought to be safe because they should be preserved by the interrupt return path.

- Ken

#2 lore raw
In reply to Zou Nan hai
Quoted 10 lines · Kenneth W

Zou Nan hai wrote on Tuesday, July 25, 2006 4:37 PM

Quoted 4 lines

I think ia64_switch_mode_phys and ia64_switch_mode_virt does not need to alloc an empty frame.
An empty frame is required by loadrs but flushrs does not need that.

This patch would make your previous "Do not assume output registers be reservered" unnecessary, isn't it? It will automatically solve the problem you are trying to fix in previous patch.

Yes, any individual of the 2 patches will fix the issue. However I still like to fix the "assume output registers to be
preserved issue" in pal.S, because that dose not follow software runtime convention.

Zou Nan hai