write_aux_reg
write_aux_reg(AUX_IRQ_HINT, irq);
write_aux_reg(AUX_IRQ_HINT, 0);
write_aux_reg(AUX_IRQ_ACT, irqact & ~0xffff);
write_aux_reg(ARC_REG_PID, asid | MMU_ENABLE);
write_aux_reg(ARC_REG_SCRATCH_DATA0, (unsigned int)pgd);
write_aux_reg(ARC_REG_FPU_CTRL, 0x100);
write_aux_reg(ARC_REG_FPU_STATUS, fwe);
write_aux_reg(ARC_REG_FPU_CTRL, restore->ctrl);
write_aux_reg(ARC_REG_FPU_STATUS, (fwe | restore->status));
write_aux_reg(AUX_IRQ_SELECT, data->hwirq);
write_aux_reg(AUX_IRQ_ENABLE, 0);
write_aux_reg(AUX_IRQ_SELECT, data->hwirq);
write_aux_reg(AUX_IRQ_ENABLE, 1);
write_aux_reg(AUX_IRQ_SELECT, data->hwirq);
write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO);
write_aux_reg(AUX_IRQ_ENABLE, 1);
write_aux_reg(AUX_IRQ_SELECT, i);
write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO);
write_aux_reg(AUX_IRQ_ENABLE, 0);
write_aux_reg(AUX_IRQ_LEV, level_mask);
write_aux_reg(AUX_IENABLE, ienb);
write_aux_reg(AUX_IENABLE, ienb);
write_aux_reg(AUX_IENABLE, ienb);
write_aux_reg(ARC_REG_PCT_INDEX, idx);
write_aux_reg(ARC_REG_PCT_CONTROL, tmp | ARC_REG_PCT_CONTROL_SN);
write_aux_reg(ARC_REG_PCT_CONTROL, (tmp & 0xffff0000) | 0x1);
write_aux_reg(ARC_REG_PCT_CONTROL, (tmp & 0xffff0000) | 0x0);
write_aux_reg(ARC_REG_PCT_INDEX, idx);
write_aux_reg(ARC_REG_PCT_COUNTL, lower_32_bits(value));
write_aux_reg(ARC_REG_PCT_COUNTH, upper_32_bits(value));
write_aux_reg(ARC_REG_PCT_INT_CTRL,
write_aux_reg(ARC_REG_PCT_INDEX, idx); /* counter # */
write_aux_reg(ARC_REG_PCT_CONFIG, hwc->config); /* condition */
write_aux_reg(ARC_REG_PCT_INT_ACT, BIT(idx));
write_aux_reg(ARC_REG_PCT_INT_CTRL,
write_aux_reg(ARC_REG_PCT_INDEX, idx);
write_aux_reg(ARC_REG_PCT_CONFIG, 0);
write_aux_reg(ARC_REG_PCT_INDEX, idx);
write_aux_reg(ARC_REG_PCT_INT_CNTL,
write_aux_reg(ARC_REG_PCT_INT_CNTH,
write_aux_reg(ARC_REG_PCT_CONFIG, 0);
write_aux_reg(ARC_REG_PCT_COUNTL, 0);
write_aux_reg(ARC_REG_PCT_COUNTH, 0);
write_aux_reg(ARC_REG_PCT_INT_ACT, BIT(idx));
write_aux_reg(ARC_REG_PCT_INT_CTRL,
write_aux_reg(ARC_REG_PCT_INT_ACT, 0xffffffff);
write_aux_reg(ARC_REG_CC_INDEX, i);
write_aux_reg(ARC_REG_IC_PTAG_HI, 0);
write_aux_reg(ARC_REG_DC_PTAG_HI, 0);
write_aux_reg(ARC_REG_SLC_RGN_END1, 0);
write_aux_reg(ARC_REG_SLC_RGN_START1, 0);
write_aux_reg(aux_tag, paddr);
write_aux_reg(ARC_REG_IC_PTAG_HI, (u64)paddr >> 32);
write_aux_reg(aux_tag, paddr);
write_aux_reg(aux_cmd, vaddr);
write_aux_reg(ARC_REG_IC_PTAG_HI, (u64)paddr >> 32);
write_aux_reg(ARC_REG_DC_PTAG_HI, (u64)paddr >> 32);
write_aux_reg(aux_cmd, paddr);
write_aux_reg(ARC_REG_IC_PTAG_HI, (u64)paddr >> 32);
write_aux_reg(ARC_REG_DC_PTAG_HI, (u64)paddr >> 32);
write_aux_reg(e, paddr + sz); /* ENDR is exclusive */
write_aux_reg(s, paddr);
write_aux_reg(ctl, read_aux_reg(ctl) | DC_CTRL_INV_MODE_FLUSH);
write_aux_reg(ctl, val);
write_aux_reg(ctl, reg & ~DC_CTRL_INV_MODE_FLUSH);
write_aux_reg(aux, 0x1);
write_aux_reg(r, read_aux_reg(r) | DC_CTRL_DIS);
write_aux_reg(r, read_aux_reg(r) & ~DC_CTRL_DIS);
write_aux_reg(ARC_REG_IC_IVIC, 1);
write_aux_reg(ARC_REG_SLC_CTRL, ctrl);
write_aux_reg(ARC_REG_SLC_RGN_END1, upper_32_bits(end));
write_aux_reg(ARC_REG_SLC_RGN_END, lower_32_bits(end));
write_aux_reg(ARC_REG_SLC_RGN_START1, upper_32_bits(paddr));
write_aux_reg(ARC_REG_SLC_RGN_START, lower_32_bits(paddr));
write_aux_reg(ARC_REG_SLC_CTRL, ctrl);
write_aux_reg(cmd, paddr);
write_aux_reg(r, ctrl);
write_aux_reg(ARC_REG_SLC_INVALIDATE, 0x1);
write_aux_reg(ARC_REG_SLC_FLUSH, 0x1);
write_aux_reg(r, read_aux_reg(r) | SLC_CTRL_DIS);
write_aux_reg(r, read_aux_reg(r) & ~SLC_CTRL_DIS);
write_aux_reg(ARC_REG_IO_COH_AP0_SIZE, order_base_2(mem_sz >> 10) - 2);
write_aux_reg(ARC_REG_IO_COH_AP0_BASE, ioc_base >> 12);
write_aux_reg(ARC_REG_IO_COH_PARTIAL, ARC_IO_COH_PARTIAL_BIT);
write_aux_reg(ARC_REG_IO_COH_ENABLE, ARC_IO_COH_ENABLE_BIT);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBWrite);
write_aux_reg(ARC_REG_TLBPD0, vaddr_n_asid | _PAGE_PRESENT);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBDeleteEntry);
write_aux_reg(ARC_REG_TLBPD0, pd0);
write_aux_reg(ARC_REG_TLBPD1, pd1);
write_aux_reg(ARC_REG_TLBPD1, pd1 & 0xFFFFFFFF);
write_aux_reg(ARC_REG_TLBPD1HI, (u64)pd1 >> 32);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBInsertEntry);
write_aux_reg(ARC_REG_TLBPD1, 0);
write_aux_reg(ARC_REG_TLBPD1HI, 0);
write_aux_reg(ARC_REG_TLBPD0, 0);
write_aux_reg(ARC_REG_TLBINDEX, entry);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBWriteNI);
write_aux_reg(ARC_REG_TLBPD0, _PAGE_HW_SZ);
write_aux_reg(ARC_REG_TLBINDEX, entry);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBWriteNI);
write_aux_reg(ARC_REG_TLBPD1, 0);
write_aux_reg(ARC_REG_TLBPD1HI, 0);
write_aux_reg(ARC_REG_TLBPD0, 0);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBWrite);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBIVUTLB);
write_aux_reg(ARC_REG_TLBPD0, vaddr_n_asid);
write_aux_reg(ARC_REG_TLBCOMMAND, TLBProbe);
write_aux_reg(ARC_REG_TLBPD1HI, 0);
write_aux_reg(ARC_REG_TLBINDEX,
write_aux_reg(ARC_REG_TLBCOMMAND, TLBRead);
write_aux_reg(ARC_REG_TLBINDEX,
write_aux_reg(ARC_REG_TLBCOMMAND, TLBGetIndex);
write_aux_reg(ARC_REG_TLBPD1, pd1);
write_aux_reg(AUX_RTC_CTRL, 1);
write_aux_reg(ARC_REG_TIMER1_LIMIT, ARC_TIMERN_MAX);
write_aux_reg(ARC_REG_TIMER1_CNT, 0);
write_aux_reg(ARC_REG_TIMER1_CTRL, ARC_TIMER_CTRL_NH);
write_aux_reg(ARC_REG_TIMER0_LIMIT, cycles);
write_aux_reg(ARC_REG_TIMER0_CNT, 0); /* start from 0 */
write_aux_reg(ARC_REG_TIMER0_CTRL, ARC_TIMER_CTRL_IE | ARC_TIMER_CTRL_NH);
write_aux_reg(ARC_REG_TIMER0_CTRL, irq_reenable | ARC_TIMER_CTRL_NH);
write_aux_reg(reg, tmp); \
write_aux_reg(ARC_REG_MCIP_WDATA, data);