⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 C
字号:
/* *  linux/arch/m68k/hp300/time.c * *  Copyright (C) 1998 Philip Blundell <philb@gnu.org> * *  This file contains the HP300-specific time handling code. */#include <asm/ptrace.h>#include <linux/types.h>#include <linux/init.h>#include <linux/sched.h>#include <linux/kernel_stat.h>#include <linux/interrupt.h>#include <asm/machdep.h>#include <asm/irq.h>#include <asm/io.h>#include <asm/system.h>#include <asm/traps.h>#include "ints.h"/* Clock hardware definitions */#define CLOCKBASE	0xf05f8000#define	CLKCR1		0x1#define	CLKCR2		0x3#define	CLKCR3		CLKCR1#define	CLKSR		CLKCR2#define	CLKMSB1		0x5#define	CLKMSB2		0x9#define	CLKMSB3		0xD/* This is for machines which generate the exact clock. */#define USECS_PER_JIFFY (1000000/HZ)#define INTVAL ((10000 / 4) - 1)static void hp300_tick(int irq, void *dev_id, struct pt_regs *regs){  unsigned long tmp;  void (*vector)(int, void *, struct pt_regs *) = dev_id;  readb(CLOCKBASE + CLKSR);  asm volatile ("movpw %1@(5),%0" : "=r" (tmp) : "a" (CLOCKBASE));  vector(irq, NULL, regs);}unsigned long hp300_gettimeoffset(void){  /* Read current timer 1 value */  unsigned char lsb, msb1, msb2;  unsigned short ticks;  msb1 = readb(CLOCKBASE + 5);  lsb = readb(CLOCKBASE + 7);  msb2 = readb(CLOCKBASE + 5);  if (msb1 != msb2)    /* A carry happened while we were reading.  Read it again */    lsb = readb(CLOCKBASE + 7);  ticks = INTVAL - ((msb2 << 8) | lsb);  return (USECS_PER_JIFFY * ticks) / INTVAL;}void __init hp300_sched_init(void (*vector)(int, void *, struct pt_regs *)){  writeb(0x1, CLOCKBASE + CLKCR2);		/* select CR1 */  writeb(0x1, CLOCKBASE + CLKCR1);		/* reset */  asm volatile(" movpw %0,%1@(5)" : : "d" (INTVAL), "a" (CLOCKBASE));  sys_request_irq(6, hp300_tick, IRQ_FLG_STD, "timer tick", vector);  writeb(0x1, CLOCKBASE + CLKCR2);		/* select CR1 */  writeb(0x40, CLOCKBASE + CLKCR1);		/* enable irq */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -