old_regs = set_irq_regs(regs);
        irq_enter();
  
-       calculate_steal_time();
- 
 -      if (test_perf_event_pending()) {
 -              clear_perf_event_pending();
 -              perf_event_do_pending();
 +      if (test_irq_work_pending()) {
 +              clear_irq_work_pending();
 +              irq_work_run();
        }
  
  #ifdef CONFIG_PPC_ISERIES
 
        pr_cont("%lu Mb, residual: %dMb\n", tlbcam_sz(tlbcam_index - 1) >> 20,
                (unsigned int)((total_lowmem - __max_low_memory) >> 20));
  
 -      __initial_memory_limit_addr = memstart_addr + __max_low_memory;
 +      memblock_set_current_limit(memstart_addr + __max_low_memory);
 +}
 +
 +void setup_initial_memory_limit(phys_addr_t first_memblock_base,
 +                              phys_addr_t first_memblock_size)
 +{
 +      phys_addr_t limit = first_memblock_base + first_memblock_size;
 +
 +      /* 64M mapped initially according to head_fsl_booke.S */
 +      memblock_set_current_limit(min_t(u64, limit, 0x04000000));
  }
+ #endif