/*
# $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_msr_asm.S,v 1.1 2002/12/12 22:13:34 dawes Exp $
##########################################################################
# NSC_LIC_ALTERNATIVE_PREAMBLE
#
# Revision 1.0
#
# National Semiconductor Alternative GPL-BSD License
#
# National Semiconductor Corporation licenses this software
# ("Software"):
#
# Geode Xfree frame buffer driver
#
# under one of the two following licenses, depending on how the
# Software is received by the Licensee.
#
# If this Software is received as part of the Linux Framebuffer or
# other GPL licensed software, then the GPL license designated
# NSC_LIC_GPL applies to this Software#
# END_NSC_LIC_ALTERNATIVE_PREAMBLE
##########################################################################
# NSC_LIC_BSD
#
# National Semiconductor Corporation Open Source License for
#
# Geode Xfree frame buffer driver
#
# (BSD License with Export Notice)
#
# Copyright (c) 1999-2001
# National Semiconductor Corporation.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following
# disclaimer in the documentation and/or other materials provided
# with the distribution.
#
# * Neither the name of the National Semiconductor Corporation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior
# written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
# INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
# OF SUCH DAMAGE.
#
# EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
# YOUR JURISDICTION. It is licensee's responsibility to comply with
# any export regulations applicable in licensee's jurisdiction. Under
# CURRENT (2001) U.S. export regulations this software
# is eligible for export from the U.S. and can be downloaded by or
# otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
# destinations which include Cuba, Iraq, Libya, North Korea, Iran,
# Syria, Sudan, Afghanistan and any other country to which the U.S.
# has embargoed goods and services.
#
# END_NSC_LIC_BSD
##########################################################################
# NSC_LIC_GPL
#
# National Semiconductor Corporation Gnu General Public License for
#
# Geode Xfree frame buffer driver
#
# (GPL License with Export Notice)
#
# Copyright (c) 1999-2001
# National Semiconductor Corporation.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted under the terms of the GNU General
# Public License as published by the Free Software Foundation#
# In addition to the terms of the GNU General Public License, neither
# the name of the National Semiconductor Corporation nor the names of
# its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# NATIONAL SEMICONDUCTOR CORPORATION OR CONTRIBUTORS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
# GOODS OR SERVICES# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE,
# INTELLECTUAL PROPERTY INFRINGEMENT, OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
# OF SUCH DAMAGE. See the GNU General Public License for more details.
#
# EXPORT LAWS: THIS LICENSE ADDS NO RESTRICTIONS TO THE EXPORT LAWS OF
# YOUR JURISDICTION. It is licensee's responsibility to comply with
# any export regulations applicable in licensee's jurisdiction. Under
# CURRENT (2001) U.S. export regulations this software
# is eligible for export from the U.S. and can be downloaded by or
# otherwise exported or reexported worldwide EXCEPT to U.S. embargoed
# destinations which include Cuba, Iraq, Libya, North Korea, Iran,
# Syria, Sudan, Afghanistan and any other country to which the U.S.
# has embargoed goods and services.
#
# You should have received a copy of the GNU General Public License
# along with this file#
# END_NSC_LIC_GPL
*/
#include "assyntax.h"
FILE("nsc_msr_asm.s")
AS_BEGIN
SEG_TEXT
ALIGNTEXT4
GLOBL GLNAME(nsc_asm_msr_vsa_rd)
GLNAME(nsc_asm_msr_vsa_rd):
PUSH_L (EBP)
MOV_L (ESP,EBP)
PUSH_L (EAX)
PUSH_L (EBX)
PUSH_L (ECX)
PUSH_L (EDX)
MOV_L (REGOFF(8,EBP),ECX)
/* unlock */
MOV_W (CONST(0x0ac1c),DX)
MOV_W (CONST(0x0fc53),AX)
OUT_W
MOV_W (CONST(0x0ac1c),DX)
MOV_W (CONST(0x0007),AX)
OUT_W
MOV_W (CONST(0x0ac1e),DX)
IN_W
MOV_L (REGOFF(12,EBP),EBX)
MOV_L (EDX,REGIND(EBX))
MOV_L (REGOFF(16,EBP),EBX)
MOV_L (EAX,REGIND(EBX))
POP_L (EDX)
POP_L (ECX)
POP_L (EBX)
POP_L (EAX)
LEAVE
RET
/*###################################*/
ALIGNTEXT4
GLOBL GLNAME(nsc_asm_msr_vsa_wr)
GLNAME(nsc_asm_msr_vsa_wr):
PUSH_L (EBP)
MOV_L (ESP,EBP)
PUSH_L (EAX)
PUSH_L (EBX)
PUSH_L (ECX)
PUSH_L (EDX)
PUSH_L (EDI)
PUSH_L (ESI)
MOV_L (REGOFF(8,EBP),ECX)
/* unlock */
MOV_W (CONST(0x0ac1c),DX)
MOV_L (CONST(0x0fc530007),EAX)
OUT_L
MOV_L (REGOFF(12,EBP),EBX)
MOV_L (REGOFF(16,EBP),EAX)
XOR_L (ESI,ESI)
XOR_L (EDI,EDI)
MOV_W (CONST(0x0ac1e),DX)
OUT_W
POP_L (ESI)
POP_L (EDI)
POP_L (EDX)
POP_L (ECX)
POP_L (EBX)
POP_L (EAX)
LEAVE
RET
/*###################################*/