1/* -*- linux-c -*- ------------------------------------------------------- * 2 * 3 * Copyright (C) 1991, 1992 Linus Torvalds 4 * Copyright 2007 rPath, Inc. - All Rights Reserved 5 * Copyright 2009 Intel Corporation; author H. Peter Anvin 6 * 7 * This file is part of the Linux kernel, and is made available under 8 * the terms of the GNU General Public License version 2. 9 * 10 * ----------------------------------------------------------------------- */ 11 12/* 13 * Get the MCA system description table 14 */ 15 16#include "boot.h" 17 18int query_mca(void) 19{ 20 struct biosregs ireg, oreg; 21 u16 len; 22 23 initregs(&ireg); 24 ireg.ah = 0xc0; 25 intcall(0x15, &ireg, &oreg); 26 27 if (oreg.eflags & X86_EFLAGS_CF) 28 return -1; /* No MCA present */ 29 30 set_fs(oreg.es); 31 len = rdfs16(oreg.bx); 32 33 if (len > sizeof(boot_params.sys_desc_table)) 34 len = sizeof(boot_params.sys_desc_table); 35 36 copy_from_fs(&boot_params.sys_desc_table, oreg.bx, len); 37 return 0; 38} 39