1eef88dfbSDaniel Schwierzeck /* 2eef88dfbSDaniel Schwierzeck * (C) Copyright 2003 3eef88dfbSDaniel Schwierzeck * Wolfgang Denk, DENX Software Engineering, <wd@denx.de> 4eef88dfbSDaniel Schwierzeck * 5eef88dfbSDaniel Schwierzeck * SPDX-License-Identifier: GPL-2.0+ 6eef88dfbSDaniel Schwierzeck */ 7eef88dfbSDaniel Schwierzeck 8eef88dfbSDaniel Schwierzeck #include <common.h> 9eef88dfbSDaniel Schwierzeck #include <command.h> 10eef88dfbSDaniel Schwierzeck #include <linux/compiler.h> 11*8cb4817dSPaul Burton #include <asm/cache.h> 12eef88dfbSDaniel Schwierzeck #include <asm/mipsregs.h> 13eef88dfbSDaniel Schwierzeck #include <asm/reboot.h> 14eef88dfbSDaniel Schwierzeck 15eef88dfbSDaniel Schwierzeck void __weak _machine_restart(void) 16eef88dfbSDaniel Schwierzeck { 17eef88dfbSDaniel Schwierzeck fprintf(stderr, "*** reset failed ***\n"); 18eef88dfbSDaniel Schwierzeck 19eef88dfbSDaniel Schwierzeck while (1) 20eef88dfbSDaniel Schwierzeck /* NOP */; 21eef88dfbSDaniel Schwierzeck } 22eef88dfbSDaniel Schwierzeck 23eef88dfbSDaniel Schwierzeck int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) 24eef88dfbSDaniel Schwierzeck { 25eef88dfbSDaniel Schwierzeck _machine_restart(); 26eef88dfbSDaniel Schwierzeck 27eef88dfbSDaniel Schwierzeck return 0; 28eef88dfbSDaniel Schwierzeck } 29eef88dfbSDaniel Schwierzeck 30eef88dfbSDaniel Schwierzeck void write_one_tlb(int index, u32 pagemask, u32 hi, u32 low0, u32 low1) 31eef88dfbSDaniel Schwierzeck { 32eef88dfbSDaniel Schwierzeck write_c0_entrylo0(low0); 33eef88dfbSDaniel Schwierzeck write_c0_pagemask(pagemask); 34eef88dfbSDaniel Schwierzeck write_c0_entrylo1(low1); 35eef88dfbSDaniel Schwierzeck write_c0_entryhi(hi); 36eef88dfbSDaniel Schwierzeck write_c0_index(index); 37eef88dfbSDaniel Schwierzeck tlb_write_indexed(); 38eef88dfbSDaniel Schwierzeck } 39*8cb4817dSPaul Burton 40*8cb4817dSPaul Burton int arch_cpu_init(void) 41*8cb4817dSPaul Burton { 42*8cb4817dSPaul Burton mips_cache_probe(); 43*8cb4817dSPaul Burton return 0; 44*8cb4817dSPaul Burton } 45