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