aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/bcm2711
Commit message (Expand)AuthorAgeFilesLines
* kernel: Remove 2FS_FS_XATTR and F2FS_STAT_FS symbols from target configsHauke Mehrtens2020-10-111-1/+0
* kernel: clean up XATTR config symbolsPaul Spooren2020-10-091-1/+0
* kernel: Move CONFIG_IONIC to generic kernel configHauke Mehrtens2020-08-101-1/+0
* kernel: unify CONFIG_GPIO_SYSFS in kernel configsFelix Fietkau2020-08-061-1/+0
* treewide: kernel: drop redundant USB_EHCI_HCD=n config symbolPetr Štetiar2020-07-091-1/+0
* bcm27xx: update to latest patches from RPi foundationÁlvaro Fernández Rojas2020-05-281-1/+3
* bcm27xx: update patches from RPi foundationÁlvaro Fernández Rojas2020-05-281-0/+6
* bcm27xx: remove linux 4.19 supportÁlvaro Fernández Rojas2020-05-281-586/+0
* bcm27xx: update 5.4 patches from RPi foundationÁlvaro Fernández Rojas2020-03-311-0/+2
* bcm27xx: refresh linux 5.4 configsÁlvaro Fernández Rojas2020-03-231-21/+0
* bcm27xx: enable THERMAL_WRITABLE_TRIPS on bcm2710 and bcm2711Bjørn Mork2020-03-182-0/+2
* kernel: move TEO governor to generic configTomasz Maciej Nowak2020-03-171-1/+0
* bcm27xx: sync 5.4 patches with RPi FoundationÁlvaro Fernández Rojas2020-03-161-9/+1
* kernel: 5.4: move some kconfig options to genericYousong Zhou2020-03-101-6/+0
* bcm27xx: add linux 5.4 supportÁlvaro Fernández Rojas2020-02-291-0/+634
* bcm27xx: update kernel configsÁlvaro Fernández Rojas2020-02-291-0/+19
* bcm27xx: update to latest patches from RPi foundationÁlvaro Fernández Rojas2020-02-291-0/+1
* brcm2708: rename target to bcm27xxAdrian Schmutzler2020-02-142-0/+578
class="cp"> #include <asm/system.h> #include <asm/smp_alt.h> #include <asm/processor.h> #include <asm/string.h> struct smp_replacement_record { unsigned char targ_size; unsigned char smp1_size; unsigned char smp2_size; unsigned char up_size; unsigned char feature; unsigned char data[0]; }; struct smp_alternative_record { void *targ_start; struct smp_replacement_record *repl; }; extern struct smp_alternative_record __start_smp_alternatives_table, __stop_smp_alternatives_table; extern unsigned long __init_begin, __init_end; void prepare_for_smp(void) { struct smp_alternative_record *r; printk(KERN_INFO "Enabling SMP...\n"); for (r = &__start_smp_alternatives_table; r != &__stop_smp_alternatives_table; r++) { BUG_ON(r->repl->targ_size < r->repl->smp1_size); BUG_ON(r->repl->targ_size < r->repl->smp2_size); BUG_ON(r->repl->targ_size < r->repl->up_size); if (system_state == SYSTEM_RUNNING && r->targ_start >= (void *)&__init_begin && r->targ_start < (void *)&__init_end) continue; if (r->repl->feature != (unsigned char)-1 && boot_cpu_has(r->repl->feature)) { memcpy(r->targ_start, r->repl->data + r->repl->smp1_size, r->repl->smp2_size); memset(r->targ_start + r->repl->smp2_size, 0x90, r->repl->targ_size - r->repl->smp2_size); } else { memcpy(r->targ_start, r->repl->data, r->repl->smp1_size); memset(r->targ_start + r->repl->smp1_size, 0x90, r->repl->targ_size - r->repl->smp1_size); } } /* Paranoia */ asm volatile ("jmp 1f\n1:"); mb(); } void unprepare_for_smp(void) { struct smp_alternative_record *r; printk(KERN_INFO "Disabling SMP...\n"); for (r = &__start_smp_alternatives_table; r != &__stop_smp_alternatives_table; r++) { BUG_ON(r->repl->targ_size < r->repl->smp1_size); BUG_ON(r->repl->targ_size < r->repl->smp2_size); BUG_ON(r->repl->targ_size < r->repl->up_size); if (system_state == SYSTEM_RUNNING && r->targ_start >= (void *)&__init_begin && r->targ_start < (void *)&__init_end) continue; memcpy(r->targ_start, r->repl->data + r->repl->smp1_size + r->repl->smp2_size, r->repl->up_size); memset(r->targ_start + r->repl->up_size, 0x90, r->repl->targ_size - r->repl->up_size); } /* Paranoia */ asm volatile ("jmp 1f\n1:"); mb(); }