Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/x86/boot/io.h
26444 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
#ifndef BOOT_IO_H
3
#define BOOT_IO_H
4
5
#include <asm/shared/io.h>
6
7
#undef inb
8
#undef inw
9
#undef inl
10
#undef outb
11
#undef outw
12
#undef outl
13
14
struct port_io_ops {
15
u8 (*f_inb)(u16 port);
16
void (*f_outb)(u8 v, u16 port);
17
void (*f_outw)(u16 v, u16 port);
18
};
19
20
extern struct port_io_ops pio_ops;
21
22
/*
23
* Use the normal I/O instructions by default.
24
* TDX guests override these to use hypercalls.
25
*/
26
static inline void init_default_io_ops(void)
27
{
28
pio_ops.f_inb = __inb;
29
pio_ops.f_outb = __outb;
30
pio_ops.f_outw = __outw;
31
}
32
33
/*
34
* Redirect port I/O operations via pio_ops callbacks.
35
* TDX guests override these callbacks with TDX-specific helpers.
36
*/
37
#define inb pio_ops.f_inb
38
#define outb pio_ops.f_outb
39
#define outw pio_ops.f_outw
40
41
#endif
42
43