xref: /kvmtool/kvm.c (revision b8f6afcd5e5dfe2cbad79f3e85d006d521be2a21)
1*b8f6afcdSPekka Enberg #include "kvm/cpu.h"
2*b8f6afcdSPekka Enberg 
3*b8f6afcdSPekka Enberg #include <stdlib.h>
4*b8f6afcdSPekka Enberg #include <fcntl.h>
5*b8f6afcdSPekka Enberg 
6*b8f6afcdSPekka Enberg static void die(const char *s)
7*b8f6afcdSPekka Enberg {
8*b8f6afcdSPekka Enberg 	perror(s);
9*b8f6afcdSPekka Enberg 	exit(1);
10*b8f6afcdSPekka Enberg }
11*b8f6afcdSPekka Enberg 
12*b8f6afcdSPekka Enberg static void cpu__reset(struct cpu *self)
13*b8f6afcdSPekka Enberg {
14*b8f6afcdSPekka Enberg 	self->regs.eip		= 0x000fff0UL;
15*b8f6afcdSPekka Enberg 	self->regs.eflags	= 0x0000002UL;
16*b8f6afcdSPekka Enberg }
17*b8f6afcdSPekka Enberg 
18*b8f6afcdSPekka Enberg static struct cpu *cpu__new(void)
19*b8f6afcdSPekka Enberg {
20*b8f6afcdSPekka Enberg 	return calloc(1, sizeof(struct cpu));
21*b8f6afcdSPekka Enberg }
22*b8f6afcdSPekka Enberg 
23*b8f6afcdSPekka Enberg int main(int argc, char *argv[])
24*b8f6afcdSPekka Enberg {
25*b8f6afcdSPekka Enberg 	struct cpu *cpu;
26*b8f6afcdSPekka Enberg 	int fd;
27*b8f6afcdSPekka Enberg 
28*b8f6afcdSPekka Enberg 	fd = open("/dev/kvm", O_RDWR);
29*b8f6afcdSPekka Enberg 	if (fd < 0)
30*b8f6afcdSPekka Enberg 		die("open");
31*b8f6afcdSPekka Enberg 
32*b8f6afcdSPekka Enberg 	cpu = cpu__new();
33*b8f6afcdSPekka Enberg 
34*b8f6afcdSPekka Enberg 	cpu__reset(cpu);
35*b8f6afcdSPekka Enberg 
36*b8f6afcdSPekka Enberg 	return 0;
37*b8f6afcdSPekka Enberg }
38