/* * This file is part of the coreboot project. * * Copyright (C) 2007 Advanced Micro Devices, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ static inline void _WRMSR(u32 addr, u32 lo, u32 hi) { __asm__ volatile ( "wrmsr" : :"c"(addr),"a"(lo), "d" (hi) ); } static inline void _RDMSR(u32 addr, u32 *lo, u32 *hi) { __asm__ volatile ( "rdmsr" :"=a"(*lo), "=d" (*hi) :"c"(addr) ); } static inline void _RDTSC(u32 *lo, u32 *hi) { __asm__ volatile ( "rdtsc" : "=a" (*lo), "=d"(*hi) ); } static inline void _cpu_id(u32 addr, u32 *val) { __asm__ volatile( "cpuid" : "=a" (val[0]), "=b" (val[1]), "=c" (val[2]), "=d" (val[3]) : "0" (addr)); } static u32 bsr(u32 x) { u8 i; u32 ret = 0; for(i=31; i>0; i--) { if(x & (1<=0; i--) { val <<= 8; valx = *(p+i); val |= valx; } return val; } void oemSet_NB32(u32 addr, u32 val, u8 *valid) { } u32 oemGet_NB32(u32 addr, u8 *valid) { *valid = 0; return 0xffffffff; } u8 oemNodePresent_D(u8 Node, u8 *ret) { *ret = 0; return 0; }