xref: /linux/arch/x86/include/asm/bios_ebda.h (revision 40d269c000bda9fcd276a0412a9cebd3f6e344c5)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_BIOS_EBDA_H
3 #define _ASM_X86_BIOS_EBDA_H
4 
5 #include <asm/io.h>
6 
7 /*
8  * Returns physical address of EBDA.  Returns 0 if there is no EBDA.
9  */
10 static inline unsigned int get_bios_ebda(void)
11 {
12 	/*
13 	 * There is a real-mode segmented pointer pointing to the
14 	 * 4K EBDA area at 0x40E.
15 	 */
16 	unsigned int address = *(unsigned short *)phys_to_virt(0x40E);
17 	address <<= 4;
18 	return address;	/* 0 means none */
19 }
20 
21 void reserve_bios_regions(void);
22 
23 #ifdef CONFIG_X86_CHECK_BIOS_CORRUPTION
24 /*
25  * This is obviously not a great place for this, but we want to be
26  * able to scatter it around anywhere in the kernel.
27  */
28 void check_for_bios_corruption(void);
29 void start_periodic_check_for_corruption(void);
30 #else
31 static inline void check_for_bios_corruption(void)
32 {
33 }
34 
35 static inline void start_periodic_check_for_corruption(void)
36 {
37 }
38 #endif
39 
40 #endif /* _ASM_X86_BIOS_EBDA_H */
41