Lines Matching +full:rom +full:- +full:addr
1 /*-
3 * Copyright (c) 2009-2010 Jung-uk Kim <jkim@FreeBSD.org>
62 (n), (r)->R_AX, (r)->R_BX, (r)->R_CX, (r)->R_DX, \
63 (r)->R_ES, (r)->R_DI); \
89 vmf->vmf_ds = regs->R_DS;
90 vmf->vmf_es = regs->R_ES;
91 vmf->vmf_ax = regs->R_AX;
92 vmf->vmf_bx = regs->R_BX;
93 vmf->vmf_cx = regs->R_CX;
94 vmf->vmf_dx = regs->R_DX;
95 vmf->vmf_bp = regs->R_BP;
96 vmf->vmf_si = regs->R_SI;
97 vmf->vmf_di = regs->R_DI;
104 regs->R_DS = vmf->vmf_ds;
105 regs->R_ES = vmf->vmf_es;
106 regs->R_FLG = vmf->vmf_flags;
107 regs->R_AX = vmf->vmf_ax;
108 regs->R_BX = vmf->vmf_bx;
109 regs->R_CX = vmf->vmf_cx;
110 regs->R_DX = vmf->vmf_dx;
111 regs->R_BP = vmf->vmf_bp;
112 regs->R_SI = vmf->vmf_si;
113 regs->R_DI = vmf->vmf_di;
139 x86bios_free(void *addr, size_t size)
144 if (addr == NULL || size == 0)
146 paddr = vtophys(addr);
151 if (x86bios_vmc.pmap[i].kva == (vm_offset_t)addr)
160 x86bios_vmc.npages -= nfree;
161 while (--i >= 0 && x86bios_vmc.pmap[i].kva == 0)
162 x86bios_vmc.npages--;
165 free(addr, M_DEVBUF);
188 vm86_datacall(-1, &vmf, &x86bios_vmc);
232 vm_offset_t addr;
234 addr = vm86_getaddr(&x86bios_vmc, X86BIOS_PHYSTOSEG(offset),
236 if (addr == 0)
237 addr = BIOS_PADDRTOVADDR(offset);
239 return ((void *)addr);
273 #define X86BIOS_ROM_SIZE (X86BIOS_MEM_SIZE - x86bios_rom_phys)
298 x86bios_set_fault(struct x86emu *emu, uint32_t addr)
302 x86bios_fault_addr = addr;
303 x86bios_fault_cs = emu->x86.R_CS;
304 x86bios_fault_ip = emu->x86.R_IP;
311 vm_offset_t addr;
317 offset -= X86BIOS_MEM_SIZE;
318 addr = x86bios_map[offset / X86BIOS_PAGE_SIZE];
319 if (addr != 0)
320 addr += offset % X86BIOS_PAGE_SIZE;
322 return ((void *)addr);
336 x86bios_emu_rdb(struct x86emu *emu, uint32_t addr)
340 va = x86bios_get_pages(addr, sizeof(*va));
342 x86bios_set_fault(emu, addr);
348 x86bios_emu_rdw(struct x86emu *emu, uint32_t addr)
352 va = x86bios_get_pages(addr, sizeof(*va));
354 x86bios_set_fault(emu, addr);
357 if ((addr & 1) != 0)
365 x86bios_emu_rdl(struct x86emu *emu, uint32_t addr)
369 va = x86bios_get_pages(addr, sizeof(*va));
371 x86bios_set_fault(emu, addr);
374 if ((addr & 3) != 0)
382 x86bios_emu_wrb(struct x86emu *emu, uint32_t addr, uint8_t val)
386 va = x86bios_get_pages(addr, sizeof(*va));
388 x86bios_set_fault(emu, addr);
394 x86bios_emu_wrw(struct x86emu *emu, uint32_t addr, uint16_t val)
398 va = x86bios_get_pages(addr, sizeof(*va));
400 x86bios_set_fault(emu, addr);
403 if ((addr & 1) != 0)
411 x86bios_emu_wrl(struct x86emu *emu, uint32_t addr, uint32_t val)
415 va = x86bios_get_pages(addr, sizeof(*va));
417 x86bios_set_fault(emu, addr);
420 if ((addr & 3) != 0)
553 x86bios_free(void *addr, size_t size)
557 if (addr == NULL || size == 0)
559 paddr = vtophys(addr);
567 free(addr, M_DEVBUF);
575 regs->X86BIOS_R_SS = X86BIOS_PHYSTOSEG(x86bios_seg_phys);
576 regs->X86BIOS_R_SP = X86BIOS_PAGE_SIZE - 2;
693 X86BIOS_ROM_BASE - x86bios_rom_phys <= 128 * 1024)
711 X86BIOS_ROM_BASE - x86bios_rom_phys, PAT_WRITE_BACK) != 0)
729 printf("x86bios: IVT 0x%06jx-0x%06jx at %p\n",
731 (vm_paddr_t)X86BIOS_IVT_SIZE + X86BIOS_IVT_BASE - 1,
733 printf("x86bios: SSEG 0x%06jx-0x%06jx at %p\n",
735 (vm_paddr_t)X86BIOS_SEG_SIZE + x86bios_seg_phys - 1,
738 printf("x86bios: EBDA 0x%06jx-0x%06jx at %p\n",
739 x86bios_rom_phys, (vm_paddr_t)X86BIOS_ROM_BASE - 1,
741 printf("x86bios: ROM 0x%06jx-0x%06jx at %p\n",
743 (vm_paddr_t)X86BIOS_MEM_SIZE - X86BIOS_SEG_SIZE - 1,
744 (caddr_t)x86bios_rom + X86BIOS_ROM_BASE - x86bios_rom_phys);
800 /* Does the shadow ROM contain BIOS POST code for x86? */
816 /* Does the shadow ROM contain BIOS POST code for x86? */