2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 * Copyright (c) 2004-2005 Silicon Graphics, Inc. All Rights Reserved.
11 * The xp_nofault_PIOR function takes a pointer to a remote PIO register
12 * and attempts to load and consume a value from it. This function
13 * will be registered as a nofault code block. In the event that the
14 * PIO read fails, the MCA handler will force the error to look
15 * corrected and vector to the xp_error_PIOR which will return an error.
17 * extern int xp_nofault_PIOR(void *remote_register);
20 .global xp_nofault_PIOR
22 mov r8=r0 // Stage a success return value
23 ld8.acq r9=[r32];; // PIO Read the specified register
24 adds r9=1,r9;; // Add to force consumption
25 or r9=r9,r9;; // Or to force consumption
26 br.ret.sptk.many b0;; // Return success
30 mov r8=1 // Return value of 1
31 br.ret.sptk.many b0;; // Return failure