aboutsummaryrefslogtreecommitdiff
path: root/src/core/asm.hpp
blob: 8a931f637bff8628f63c25ef6b5d1ffeba03d232 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#pragma once

#define READ_MSR(reg,high,low) \
    asm volatile( \
        "mov %2, %%ecx;rdmsr   \n\t" \
        "mov %%edx, %0         \n\t" \
        "mov %%eax, %1" \
        : "=m" (high), "=m" (low) :"i" (reg))

#define WRITE_MSR(reg,high,low) \
    asm volatile( \
        "mov %1, %%edx  \n\t" \
        "mov %2, %%eax  \n\t" \
        "mov %0, %%ecx;wrmsr"::"i" (reg), "m" (high), "m" (low))

#define outb(port,value) \
    asm volatile ("outb %%al, %%dx" :: "a"(value), "d" (port) )

#define outbj(port,value) \
    asm volatile ("outb %%al, %%dx;" :: "a" (value), "d"(port) )

#define inb(port,dst) \
    asm volatile ("inb %%dx, %%al": "=a" (dst) : "d" (port))