xref: /netbsd-src/sys/arch/hpc/stand/hpcboot/arm/arm_arch.h (revision 569b7f924fd547a1a14b66aa1fdab30e6ee501c2)
1*569b7f92Snonaka /* -*-C++-*-	$NetBSD: arm_arch.h,v 1.7 2010/04/06 16:20:28 nonaka Exp $	*/
29173eae7Such 
39173eae7Such /*-
49173eae7Such  * Copyright (c) 2001 The NetBSD Foundation, Inc.
59173eae7Such  * All rights reserved.
69173eae7Such  *
79173eae7Such  * This code is derived from software contributed to The NetBSD Foundation
89173eae7Such  * by UCHIYAMA Yasushi.
99173eae7Such  *
109173eae7Such  * Redistribution and use in source and binary forms, with or without
119173eae7Such  * modification, are permitted provided that the following conditions
129173eae7Such  * are met:
139173eae7Such  * 1. Redistributions of source code must retain the above copyright
149173eae7Such  *    notice, this list of conditions and the following disclaimer.
159173eae7Such  * 2. Redistributions in binary form must reproduce the above copyright
169173eae7Such  *    notice, this list of conditions and the following disclaimer in the
179173eae7Such  *    documentation and/or other materials provided with the distribution.
189173eae7Such  *
199173eae7Such  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
209173eae7Such  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
219173eae7Such  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
229173eae7Such  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
239173eae7Such  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
249173eae7Such  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
259173eae7Such  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
269173eae7Such  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
279173eae7Such  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
289173eae7Such  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
299173eae7Such  * POSSIBILITY OF SUCH DAMAGE.
309173eae7Such  */
319173eae7Such 
329173eae7Such #ifndef _HPCBOOT_ARM_ARCH_H_
339173eae7Such #define	_HPCBOOT_ARM_ARCH_H_
349173eae7Such 
359173eae7Such #include <hpcboot.h>
369173eae7Such #include <arch.h>
379173eae7Such 
389173eae7Such class Console;
399173eae7Such 
409173eae7Such class ARMArchitecture : public Architecture {
413af75740Srafal protected:
429173eae7Such 	int _kmode;
43*569b7f92Snonaka 	// test routine for peripherals.
443af75740Srafal 	virtual void testFramebuffer(void) = 0;
453af75740Srafal 	virtual void testUART(void) = 0;
469173eae7Such 
47*569b7f92Snonaka 	// dump peripheral regs.
48*569b7f92Snonaka 	virtual void dumpPeripheralRegs(void) = 0;
49*569b7f92Snonaka 
509173eae7Such public:
519173eae7Such 	ARMArchitecture(Console *&, MemoryManager *&);
529173eae7Such 	virtual ~ARMArchitecture(void);
539173eae7Such 
543af75740Srafal 	virtual BOOL init(void) = 0;
559173eae7Such 	void systemInfo(void);
563af75740Srafal 
573af75740Srafal 	virtual BOOL setupLoader(void) = 0;
583af75740Srafal 	virtual void jump(paddr_t info, paddr_t pvec) = 0;
599173eae7Such };
609173eae7Such 
619173eae7Such __BEGIN_DECLS
629173eae7Such // Coprocessor 15
6324c8a902Suwe uint32_t GetCop15Reg0(void);
6424c8a902Suwe uint32_t GetCop15Reg1(void);	void SetCop15Reg1(uint32_t);
6524c8a902Suwe uint32_t GetCop15Reg2(void);	void SetCop15Reg2(uint32_t);
6624c8a902Suwe uint32_t GetCop15Reg3(void);	void SetCop15Reg3(uint32_t);
6724c8a902Suwe uint32_t GetCop15Reg5(void);
6824c8a902Suwe uint32_t GetCop15Reg6(void);
6924c8a902Suwe uint32_t GetCop15Reg13(void);	void SetCop15Reg13(uint32_t);
7024c8a902Suwe uint32_t GetCop15Reg14(void);
719173eae7Such 
729173eae7Such // Interrupt
739173eae7Such void EI(void);
749173eae7Such void DI(void);
759173eae7Such 
769173eae7Such // Write-Back I/D-separate Cache
779173eae7Such void InvalidateICache(void);
789173eae7Such void WritebackDCache(void);
799173eae7Such void InvalidateDCache(void);
809173eae7Such void WritebackInvalidateDCache(void);
81*569b7f92Snonaka void WritebufferFlush(void);
829173eae7Such 
839173eae7Such // MMU TLB access
849173eae7Such void FlushIDTLB(void);
859173eae7Such void FlushITLB(void);
869173eae7Such void FlushDTLB(void);
879173eae7Such void FlushDTLBS(vaddr_t);
889173eae7Such 
8924c8a902Suwe uint32_t GetCPSR(void);
9024c8a902Suwe void SetCPSR(uint32_t);
919173eae7Such void SetSVCMode(void);
929173eae7Such void SetSystemMode(void);
939173eae7Such 
94*569b7f92Snonaka extern uint32_t dcachesize;
95*569b7f92Snonaka 
969173eae7Such __END_DECLS
979173eae7Such 
989173eae7Such #endif // _HPCBOOT_ARM_ARCH_H_
99