/*
# $XFree86: xc/programs/Xserver/hw/xfree86/drivers/nsc/nsc_msr_asm.s,v 1.1 2002/12/10 15:12:25 alanh 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; in all other circumstances 
# then the BSD-style license designated NSC_LIC_BSD shall apply.
#
# 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; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
# 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; either 
# version 2 of the License, or (at your option) any later version  
#
# 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; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
# 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; if not, write to the Free Software Foundation, 
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
#
# 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

/*###################################*/

