Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 Oct 2009 19:22:35 -0400
From:      Randall Stewart <rrs@lakerest.net>
To:        Julian Elischer <julian@elischer.org>
Cc:        svn-src-projects@FreeBSD.org, src-committers@FreeBSD.org
Subject:   Re: svn commit: r198629 - projects/mips/sys/mips/rmi
Message-ID:  <6CCB8B83-4DA5-4494-9919-82C778E9745F@lakerest.net>
In-Reply-To: <4AEA1E78.3010008@elischer.org>
References:  <200910292130.n9TLUM2A010750@svn.freebsd.org> <4AEA1E78.3010008@elischer.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Twas not me..

I suppose I could read the manuals I have and add comments BUT
I would first have to check with RMI on that.. since I have been
authorized to commit their code (and any mod's I need to make).. but
I had to sign a NDA to get the manuals and such.. so I may
not be able to ;-(

R

On Oct 29, 2009, at 7:00 PM, Julian Elischer wrote:

> Randall Stewart wrote:
>> Author: rrs
>> Date: Thu Oct 29 21:30:21 2009
>> New Revision: 198629
>> URL: http://svn.freebsd.org/changeset/base/198629
>> Log:
>>  adds rmi specific mips extensions file and makes sure
>>  the includes point to the new place.
>
> nice.. pitty someone stripped out the fifty or so lines of comments
> that this file mus SURELY have had when it was written.. (surely?)
>
>> Added:
>>  projects/mips/sys/mips/rmi/rmi_mips_exts.h
>> Modified:
>>  projects/mips/sys/mips/rmi/xlr_machdep.c
>>  projects/mips/sys/mips/rmi/xlr_pci.c
>> Added: projects/mips/sys/mips/rmi/rmi_mips_exts.h
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
>> +++ projects/mips/sys/mips/rmi/rmi_mips_exts.h	Thu Oct 29 21:30:21  
>> 2009	(r198629)
>> @@ -0,0 +1,144 @@
>> +/*-
>> + * Copyright (c) 2003-2009 RMI 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:
>> + * 1. Redistributions of source code must retain the above copyright
>> + *    notice, this list of conditions and the following disclaimer.
>> + * 2. 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.
>> + * 3. Neither the name of RMI 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 AUTHOR 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 AUTHOR 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 OR OTHERWISE) ARISING  
>> IN ANY WAY
>> + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  
>> POSSIBILITY OF
>> + * SUCH DAMAGE.
>> + *
>> + * RMI_BSD */
>> +#ifndef __MIPS_EXTS_H__
>> +#define __MIPS_EXTS_H__
>> +
>> +#define enable_KX(flags)   __asm__ __volatile__ (          \
>> +		".set push\n"              \
>> +		".set noat\n"               \
>> +		".set noreorder\n"     \
>> +		"mfc0 %0, $12\n\t"             \
>> +		"ori $1, %0, 0x81\n\t"   \
>> +		"xori $1, 1\n\t"      \
>> +		"mtc0 $1, $12\n"       \
>> +		".set pop\n"          \
>> +		: "=r"(flags) )
>> +
>> +#define disable_KX(flags)   __asm__ __volatile__ (          \
>> +		".set push\n"              \
>> +		"mtc0 %0, $12\n"       \
>> +		".set pop\n"          \
>> +		: : "r"(flags) )
>> +
>> +#define CPU_BLOCKID_IFU      0
>> +#define CPU_BLOCKID_ICU      1
>> +#define CPU_BLOCKID_IEU      2
>> +#define CPU_BLOCKID_LSU      3
>> +#define CPU_BLOCKID_MMU      4
>> +#define CPU_BLOCKID_PRF      5
>> +
>> +#define LSU_CERRLOG_REGID    9
>> +
>> +static __inline__ unsigned int read_32bit_phnx_ctrl_reg(int block,  
>> int reg)
>> +{ +	unsigned int __res;
>> +
>> +	__asm__ __volatile__(                                   +			".set 
>> \tpush\n\t"                            +			".set\tnoreorder\n\t"  
>> +			"move $9, %1\n" +			/* "mfcr\t$8, $9\n\t"          */
>> +			".word 0x71280018\n"
>> +			"move %0, $8\n"
>> +			".set\tpop"       +			: "=r" (__res) : "r"((block<<8)|reg)
>> +			: "$8", "$9"
>> +			);
>> +	return __res;
>> +}
>> +
>> +static __inline__ void write_32bit_phnx_ctrl_reg(int block, int  
>> reg, unsigned int value)
>> +{
>> +	__asm__ __volatile__(            +			".set\tpush\n\t"
>> +			".set\tnoreorder\n\t"
>> +			"move $8, %0\n"
>> +			"move $9, %1\n"
>> +			/* "mtcr\t$8, $9\n\t"  */
>> +			".word 0x71280019\n"
>> +			".set\tpop"
>> +			:
>> +			: "r" (value), "r"((block<<8)|reg)
>> +			: "$8", "$9"
>> +			);
>> +}
>> +
>> +static __inline__ unsigned long long read_64bit_phnx_ctrl_reg(int  
>> block, int reg)
>> +{	
>> +	unsigned int high, low;						
>> +	
>> +	__asm__ __volatile__(					
>> +		".set\tmips64\n\t"				
>> +		"move    $9, %2\n"
>> +		/* "mfcr    $8, $9\n" */
>> +		".word   0x71280018\n"
>> +		"dsrl32  %0, $8, 0\n\t"			        +		"dsll32  $8, $8, 0\n 
>> \t"                         +		"dsrl32  %1, $8, 0\n 
>> \t"                         +		".set mips0"					
>> +		: "=r" (high), "=r"(low)
>> +		: "r"((block<<8)|reg)
>> +		: "$8", "$9"
>> +		);	
>> +		
>> +	return ( (((unsigned long long)high)<<32) | low);
>> +}
>> +
>> +static __inline__ void write_64bit_phnx_ctrl_reg(int block, int  
>> reg,unsigned long long value)
>> +{
>> +	__uint32_t low, high;
>> +	high = value >> 32;
>> +	low = value & 0xffffffff;
>> +
>> +	__asm__ __volatile__(
>> +		".set push\n"
>> +		".set noreorder\n"
>> +		".set mips4\n\t"
>> +		/* Set up "rs" */
>> +		"move $9, %0\n"
>> +
>> +		/* Store 64 bit value in "rt" */
>> +		"dsll32 $10, %1, 0  \n\t"
>> +		"dsll32 $8, %2, 0  \n\t"
>> +		"dsrl32 $8, $8, 0  \n\t"
>> +		"or     $10, $8, $8 \n\t"
>> +
>> +		".word 0x71280019\n" /* mtcr $8, $9 */
>> +
>> +		".set pop\n"
>> +
>> +		:  /* No outputs */
>> +		: "r"((block<<8)|reg), "r" (high), "r" (low)
>> +		: "$8", "$9", "$10"
>> +		);
>> +}
>> +
>> +
>> +#endif
>> Modified: projects/mips/sys/mips/rmi/xlr_machdep.c
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- projects/mips/sys/mips/rmi/xlr_machdep.c	Thu Oct 29 21:25:16  
>> 2009	(r198628)
>> +++ projects/mips/sys/mips/rmi/xlr_machdep.c	Thu Oct 29 21:30:21  
>> 2009	(r198629)
>> @@ -69,7 +69,7 @@
>> #include <machine/fls64.h>
>> #include <machine/intr_machdep.h>
>> #include <machine/smp.h>
>> -#include <machine/mips-exts.h>
>> +#include <mips/rmi/rmi_mips_exts.h>
>>  #include <mips/rmi/iomap.h>
>> #include <mips/rmi/clock.h>
>> Modified: projects/mips/sys/mips/rmi/xlr_pci.c
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> = 
>> =====================================================================
>> --- projects/mips/sys/mips/rmi/xlr_pci.c	Thu Oct 29 21:25:16 2009	 
>> (r198628)
>> +++ projects/mips/sys/mips/rmi/xlr_pci.c	Thu Oct 29 21:30:21 2009	 
>> (r198629)
>> @@ -38,7 +38,7 @@
>> #include <sys/bus.h>
>> #include <machine/bus.h>
>> #include <machine/md_var.h>
>> -#include <machine/mips-exts.h>
>> +#include <mips/rmi/rmi_mips_exts.h>
>> #include <machine/cpuregs.h>
>> #include <vm/vm.h>
>> #include <vm/vm_param.h>
>

------------------------------
Randall Stewart
803-317-4952 (cell)
803-345-0391(direct)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6CCB8B83-4DA5-4494-9919-82C778E9745F>