// SPDX-License-Identifier: GPL-2.0-only /* -*- linux-c -*- ------------------------------------------------------- * * * Copyright (C) 1991, 1992 Linus Torvalds * Copyright 2007-2008 rPath, Inc. - All Rights Reserved * Copyright 2009 Intel Corporation; author H. Peter Anvin * * ----------------------------------------------------------------------- */ /* * Enable A20 gate (return -1 on failure) */ #include "boot.h" #define MAX_8042_LOOPS … #define MAX_8042_FF … static int empty_8042(void) { … } /* Returns nonzero if the A20 line is enabled. The memory address used as a test is the int $0x80 vector, which should be safe. */ #define A20_TEST_ADDR … #define A20_TEST_SHORT … #define A20_TEST_LONG … static int a20_test(int loops) { … } /* Quick test to see if A20 is already enabled */ static int a20_test_short(void) { … } /* Longer test that actually waits for A20 to come on line; this is useful when dealing with the KBC or other slow external circuitry. */ static int a20_test_long(void) { … } static void enable_a20_bios(void) { … } static void enable_a20_kbc(void) { … } static void enable_a20_fast(void) { … } /* * Actual routine to enable A20; return 0 on ok, -1 on failure */ #define A20_ENABLE_LOOPS … int enable_a20(void) { … }