Interrupt call helper.
66 "movl (com32_regs + 40), %%eax\n\t" 67 "andl $0x200cd7, %%eax\n\t" 68 "movl %%eax, (com32_regs + 40)\n\t" 70 "movw %%sp, %%ss:(com32_saved_sp)\n\t" 71 "movw $com32_regs, %%sp\n\t" 78 "movw %%ss:(com32_saved_sp), %%sp\n\t" 81 "movb %%ss:(com32_int_vector), %%al\n\t" 82 "movb %%al, %%cs:(com32_intcall_instr + 1)\n\t" 89 "com32_intcall_instr:\n\t" 93 "movw %%sp, %%ss:(com32_saved_sp)\n\t" 94 "movw $(com32_regs + 44), %%sp\n\t" 101 "movw %%ss:(com32_saved_sp), %%sp\n\t" 110 if ( outregs_phys ) {
userptr_t phys_to_user(unsigned long phys_addr)
Convert physical address to user pointer.
__asm__ __volatile__("call *%9" :"=a"(result), "=c"(discard_ecx), "=d"(discard_edx) :"d"(0), "a"(code), "b"(0), "c"(in_phys), "D"(0), "S"(out_phys), "m"(hypercall))
__asm__(".section \".rodata\", \"a\", " PROGBITS "\n\t" "\nprivate_key_data:\n\t" ".size private_key_data, ( . - private_key_data )\n\t" ".equ private_key_len, ( . - private_key_data )\n\t" ".previous\n\t")
userptr_t virt_to_user(volatile const void *addr)
Convert virtual address to user pointer.
#define REAL_CODE(asm_code_str)
void interrupt(int intr, struct interrupt_frame32 *frame32, struct interrupt_frame64 *frame64)
Interrupt handler.
void memcpy_user(userptr_t dest, off_t dest_off, userptr_t src, off_t src_off, size_t len)
Copy data between user buffers.