138e518ecSVenkatesh Srinivas/* 238e518ecSVenkatesh Srinivas * Copyright (c) 2010 The DragonFly Project. All rights reserved. 338e518ecSVenkatesh Srinivas * All rights reserved. 438e518ecSVenkatesh Srinivas * 538e518ecSVenkatesh Srinivas * This code is derived from software contributed to The DragonFly Project 638e518ecSVenkatesh Srinivas * by Venkatesh Srinivas <me@endeavour.zapto.org> 738e518ecSVenkatesh Srinivas * 838e518ecSVenkatesh Srinivas * Redistribution and use in source and binary forms, with or without 938e518ecSVenkatesh Srinivas * modification, are permitted provided that the following conditions 1038e518ecSVenkatesh Srinivas * are met: 1138e518ecSVenkatesh Srinivas * 1238e518ecSVenkatesh Srinivas * 1. Redistributions of source code must retain the above copyright 1338e518ecSVenkatesh Srinivas * notice, this list of conditions and the following disclaimer. 1438e518ecSVenkatesh Srinivas * 2. Redistributions in binary form must reproduce the above copyright 1538e518ecSVenkatesh Srinivas * notice, this list of conditions and the following disclaimer in the 1638e518ecSVenkatesh Srinivas * documentation and/or other materials provided with the distribution. 1738e518ecSVenkatesh Srinivas * 3. Neither the name of The DragonFly Project nor the names of its 1838e518ecSVenkatesh Srinivas * contributors may be used to endorse or promote products derived from this 1938e518ecSVenkatesh Srinivas * software without specific prior written permission. 2038e518ecSVenkatesh Srinivas * 2138e518ecSVenkatesh Srinivas * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' 2238e518ecSVenkatesh Srinivas * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2338e518ecSVenkatesh Srinivas * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2438e518ecSVenkatesh Srinivas * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2538e518ecSVenkatesh Srinivas * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2638e518ecSVenkatesh Srinivas * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2738e518ecSVenkatesh Srinivas * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2838e518ecSVenkatesh Srinivas * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2938e518ecSVenkatesh Srinivas * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3038e518ecSVenkatesh Srinivas * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3138e518ecSVenkatesh Srinivas * SUCH DAMAGE. 3238e518ecSVenkatesh Srinivas */ 3338e518ecSVenkatesh Srinivas 3438e518ecSVenkatesh Srinivas#include <machine/asmacros.h> 3538e518ecSVenkatesh Srinivas#include <machine/cputypes.h> 3638e518ecSVenkatesh Srinivas#include <machine/pmap.h> 3738e518ecSVenkatesh Srinivas#include <machine/specialreg.h> 3838e518ecSVenkatesh Srinivas 3938e518ecSVenkatesh Srinivas#include "assym.s" 4038e518ecSVenkatesh Srinivas 4138e518ecSVenkatesh Srinivas .text 4238e518ecSVenkatesh Srinivas 4338e518ecSVenkatesh Srinivas/* 44e5c52dd7SSepherosa Ziehau * void cpu_mmw_pause_int(int *addr, int oldval, int cstate, int intrbrk) 4538e518ecSVenkatesh Srinivas */ 46014e00daSVenkatesh SrinivasENTRY(cpu_mmw_pause_int) 474302200fSVenkatesh Srinivas movq %rdi, %rax 48a46b4a23SMatthew Dillon movq %rdx, %r8 49e5c52dd7SSepherosa Ziehau movq %rcx, %r9 504302200fSVenkatesh Srinivas 514302200fSVenkatesh Srinivas xorq %rcx, %rcx 524302200fSVenkatesh Srinivas xorq %rdx, %rdx 534302200fSVenkatesh Srinivas monitor 544302200fSVenkatesh Srinivas cmpl (%rax), %esi 554302200fSVenkatesh Srinivas jne 1f 56a46b4a23SMatthew Dillon movq %r8, %rax 57e5c52dd7SSepherosa Ziehau movq %r9, %rcx 584302200fSVenkatesh Srinivas mwait 5938e518ecSVenkatesh Srinivas1: 6038e518ecSVenkatesh Srinivas ret 61*b1d2a2deSzrjEND(cpu_mmw_pause_int) 6238e518ecSVenkatesh Srinivas 6338e518ecSVenkatesh Srinivas/* 64e5c52dd7SSepherosa Ziehau * void cpu_mmw_pause_long(long *addr, long oldval, int cstate, int intrbrk) 6538e518ecSVenkatesh Srinivas */ 66014e00daSVenkatesh SrinivasENTRY(cpu_mmw_pause_long) 6738e518ecSVenkatesh Srinivas movq %rdi, %rax 68a46b4a23SMatthew Dillon movq %rdx, %r8 69e5c52dd7SSepherosa Ziehau movq %rcx, %r9 70e5c52dd7SSepherosa Ziehau 7138e518ecSVenkatesh Srinivas xorq %rcx, %rcx 724302200fSVenkatesh Srinivas xorq %rdx, %rdx 7338e518ecSVenkatesh Srinivas monitor 744302200fSVenkatesh Srinivas cmpq (%rax), %rsi 754302200fSVenkatesh Srinivas jne 1f 76a46b4a23SMatthew Dillon movq %r8, %rax 77e5c52dd7SSepherosa Ziehau movq %r9, %rcx 7838e518ecSVenkatesh Srinivas mwait 794302200fSVenkatesh Srinivas1: 8038e518ecSVenkatesh Srinivas ret 81*b1d2a2deSzrjEND(cpu_mmw_pause_long) 82