/* -*- linux-c -*- ------------------------------------------------------- * * * Copyright (C) 1991, 1992 Linus Torvalds * Copyright 2007 rPath, Inc. - All Rights Reserved * * This file is part of the Linux kernel, and is made available under * the terms of the GNU General Public License version 2. * * ----------------------------------------------------------------------- */ /* * Get the Voyager config information */ #include "boot.h" int query_voyager(void) { u8 err; u16 es, di; /* Abuse the apm_bios_info area for this */ u8 *data_ptr = (u8 *)&boot_params.apm_bios_info; data_ptr[0] = 0xff; /* Flag on config not found(?) */ asm("pushw %%es ; " "int $0x15 ; " "setc %0 ; " "movw %%es, %1 ; " "popw %%es" : "=q" (err), "=r" (es), "=D" (di) : "a" (0xffc0)); if (err) return -1; /* Not Voyager */ set_fs(es); copy_from_fs(data_ptr, di, 7); /* Table is 7 bytes apparently */ return 0; }