예제 #1
0
void arm_timer_disable(void)
{
	u32 ctrl;

	ctrl = arm_readl((void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_CTRL));
	ctrl &= ~TIMER_CTRL_ENABLE;
	arm_writel(ctrl, (void *)(REALVIEW_PBA8_TIMER0_1_BASE + TIMER_CTRL));
}
예제 #2
0
파일: sp804.c 프로젝트: 32bitmicro/xvisor
void sp804_disable(void)
{
	u32 ctrl;

	ctrl = arm_readl((void *)(sp804_base + TIMER_CTRL));
	ctrl &= ~TIMER_CTRL_ENABLE;
	arm_writel(ctrl, (void *)(sp804_base + TIMER_CTRL));
}
void virtio_console_printch(physical_addr_t base, char ch)
{
	u32 tmp;
	struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG;

	tmp = arm_readl((void *)(base + VIRTIO_MMIO_DEVICE_ID));
	if (tmp != VIRTIO_ID_CONSOLE) {
		return;
	}

	tmp = arm_readl((void *)(base + VIRTIO_MMIO_HOST_FEATURES));
	if (!(tmp & (1 << VIRTIO_CONSOLE_F_EMERG_WRITE))) {
		return;
	}

	arm_writel(ch, &p->emerg_wr);
}
예제 #4
0
void arm_timer_disable(void)
{
	u32 ctrl;

	ctrl = arm_readl((void *)(VERSATILE_TIMER0_1_BASE + TIMER_CTRL));
	ctrl &= ~TIMER_CTRL_ENABLE;
	arm_writel(ctrl, (void *)(VERSATILE_TIMER0_1_BASE + TIMER_CTRL));
}
예제 #5
0
void arm_timer_disable(void)
{
	u32 ctrl;

	ctrl = arm_readl((void *)(V2M_TIMER0 + TIMER_CTRL));
	ctrl &= ~TIMER_CTRL_ENABLE;
	arm_writel(ctrl, (void *)(V2M_TIMER0 + TIMER_CTRL));
}
char virtio_console_getch(physical_addr_t base)
{
	u32 tmp;
	struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG;

	tmp = arm_readl((void *)(base + VIRTIO_MMIO_DEVICE_ID));
	if (tmp != VIRTIO_ID_CONSOLE) {
		return 0;
	}

	tmp = arm_readl((void *)(base + VIRTIO_MMIO_HOST_FEATURES));
	if (!(tmp & (1 << VIRTIO_CONSOLE_F_EMERG_WRITE))) {
		return 0;
	}

	while (!((tmp = arm_readl(&p->emerg_wr)) & (1 << 31))) ;

	return (char)(tmp & 0xFFU);
}
예제 #7
0
파일: arm_board.c 프로젝트: CoryXie/xvisor
int arm_board_timer_init(u32 usecs)
{
	u32 val, irq;
	u64 counter_mult, counter_shift, counter_mask;

	counter_mask = 0xFFFFFFFFULL;
	counter_shift = 20;
	counter_mult = ((u64)1000000) << counter_shift;
	counter_mult += (((u64)1000) >> 1);
	counter_mult = arm_udiv64(counter_mult, ((u64)1000));

	irq = IRQ_V2M_TIMER0;

	val = arm_readl((void *)V2M_SYSCTL) | SCCTRL_TIMEREN0SEL_TIMCLK;
	arm_writel(val, (void *)V2M_SYSCTL);

	return sp804_init(usecs, V2M_TIMER0, irq, 
			  counter_mask, counter_mult, counter_shift);
}
예제 #8
0
파일: gic.c 프로젝트: Florentah/xvisor-next
static inline u32 gic_read(virtual_addr_t addr)
{
	return arm_readl((void *)(addr));
}
bool virtio_console_can_getch(physical_addr_t base)
{
	struct virtio_console_config *p = (void *)base + VIRTIO_MMIO_CONFIG;

	return ((tmp = arm_readl(&p->emerg_wr)) & (1 << 31)) ? TRUE : FALSE;
}