cregit-Linux how code gets into the kernel

Release 4.14 arch/mips/loongson64/common/reset.c

/*
 * This program is free software; you can redistribute  it and/or modify it
 * under  the terms of  the GNU General  Public License as published by the
 * Free Software Foundation;  either version 2 of the  License, or (at your
 * option) any later version.
 *
 * Copyright (C) 2007 Lemote, Inc. & Institute of Computing Technology
 * Author: Fuxin Zhang, zhangfx@lemote.com
 * Copyright (C) 2009 Lemote, Inc.
 * Author: Zhangjin Wu, wuzhangjin@gmail.com
 */
#include <linux/init.h>
#include <linux/pm.h>

#include <asm/idle.h>
#include <asm/reboot.h>

#include <loongson.h>
#include <boot_param.h>


static inline void loongson_reboot(void) { #ifndef CONFIG_CPU_JUMP_WORKAROUNDS ((void (*)(void))ioremap_nocache(LOONGSON_BOOT_BASE, 4)) (); #else void (*func)(void); func = (void *)ioremap_nocache(LOONGSON_BOOT_BASE, 4); __asm__ __volatile__( " .set noat \n" " jr %[func] \n" " .set at \n" : /* No outputs */ : [func] "r" (func)); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Wu Zhangjin6298.41%375.00%
Ralf Bächle11.59%125.00%
Total63100.00%4100.00%


static void loongson_restart(char *command) { #ifndef CONFIG_LEFI_FIRMWARE_INTERFACE /* do preparation for reboot */ mach_prepare_reboot(); /* reboot via jumping to boot base address */ loongson_reboot(); #else void (*fw_restart)(void) = (void *)loongson_sysconf.restart_addr; fw_restart(); while (1) { if (cpu_wait) cpu_wait(); } #endif }

Contributors

PersonTokensPropCommitsCommitProp
Huacai Chen4068.97%133.33%
Wu Zhangjin1831.03%266.67%
Total58100.00%3100.00%


static void loongson_poweroff(void) { #ifndef CONFIG_LEFI_FIRMWARE_INTERFACE mach_prepare_shutdown(); unreachable(); #else void (*fw_poweroff)(void) = (void *)loongson_sysconf.poweroff_addr; fw_poweroff(); while (1) { if (cpu_wait) cpu_wait(); } #endif }

Contributors

PersonTokensPropCommitsCommitProp
Huacai Chen4074.07%125.00%
Wu Zhangjin1425.93%375.00%
Total54100.00%4100.00%


static void loongson_halt(void) { pr_notice("\n\n** You can safely turn off the power now **\n\n"); while (1) { if (cpu_wait) cpu_wait(); } }

Contributors

PersonTokensPropCommitsCommitProp
Wu Zhangjin26100.00%1100.00%
Total26100.00%1100.00%


static int __init mips_reboot_setup(void) { _machine_restart = loongson_restart; _machine_halt = loongson_halt; pm_power_off = loongson_poweroff; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Wu Zhangjin24100.00%2100.00%
Total24100.00%2100.00%

arch_initcall(mips_reboot_setup);

Overall Contributors

PersonTokensPropCommitsCommitProp
Wu Zhangjin16164.66%562.50%
Huacai Chen8333.33%112.50%
Ralf Bächle52.01%225.00%
Total249100.00%8100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.