__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_SH_SWITCH_TO_32_H
#define __ASM_SH_SWITCH_TO_32_H
#ifdef CONFIG_SH_DSP
#define is_dsp_enabled(tsk) \
(!!(tsk->thread.dsp_status.status & SR_DSP))
#define __restore_dsp(tsk) \
do { \
register u32 *__ts2 __asm__ ("r2") = \
(u32 *)&tsk->thread.dsp_status; \
__asm__ __volatile__ ( \
".balign 4\n\t" \
"movs.l @r2+, a0\n\t" \
"movs.l @r2+, a1\n\t" \
"movs.l @r2+, a0g\n\t" \
"movs.l @r2+, a1g\n\t" \
"movs.l @r2+, m0\n\t" \
"movs.l @r2+, m1\n\t" \
"movs.l @r2+, x0\n\t" \
"movs.l @r2+, x1\n\t" \
"movs.l @r2+, y0\n\t" \
"movs.l @r2+, y1\n\t" \
"lds.l @r2+, dsr\n\t" \
"ldc.l @r2+, rs\n\t" \
"ldc.l @r2+, re\n\t" \
"ldc.l @r2+, mod\n\t" \
: : "r" (__ts2)); \
} while (0)
#define __save_dsp(tsk) \
do { \
register u32 *__ts2 __asm__ ("r2") = \
(u32 *)&tsk->thread.dsp_status + 14; \
\
__asm__ __volatile__ ( \
".balign 4\n\t" \
"stc.l mod, @-r2\n\t" \
"stc.l re, @-r2\n\t" \
"stc.l rs, @-r2\n\t" \
"sts.l dsr, @-r2\n\t" \
"movs.l y1, @-r2\n\t" \
"movs.l y0, @-r2\n\t" \
"movs.l x1, @-r2\n\t" \
"movs.l x0, @-r2\n\t" \
"movs.l m1, @-r2\n\t" \
"movs.l m0, @-r2\n\t" \
"movs.l a1g, @-r2\n\t" \
"movs.l a0g, @-r2\n\t" \
"movs.l a1, @-r2\n\t" \
"movs.l a0, @-r2\n\t" \
: : "r" (__ts2)); \
} while (0)
#else
#define is_dsp_enabled(tsk) (0)
#define __save_dsp(tsk) do { } while (0)
#define __restore_dsp(tsk) do { } while (0)
#endif
struct task_struct *__switch_to(struct task_struct *prev,
struct task_struct *next);
/*
* switch_to() should switch tasks to task nr n, first
*/
#define switch_to(prev, next, last) \
do { \
register u32 *__ts1 __asm__ ("r1"); \
register u32 *__ts2 __asm__ ("r2"); \
register u32 *__ts4 __asm__ ("r4"); \
register u32 *__ts5 __asm__ ("r5"); \
register u32 *__ts6 __asm__ ("r6"); \
register u32 __ts7 __asm__ ("r7"); \
struct task_struct *__last; \
\
if (is_dsp_enabled(prev)) \
__save_dsp(prev); \
if (is_dsp_enabled(next)) \
__restore_dsp(next); \
\
__ts1 = (u32 *)&prev->thread.sp; \
__ts2 = (u32 *)&prev->thread.pc; \
__ts4 = (u32 *)prev; \
__ts5 = (u32 *)next; \
__ts6 = (u32 *)&next->thread.sp; \
__ts7 = next->thread.pc; \
\
__asm__ __volatile__ ( \
".balign 4\n\t" \
"stc.l gbr, @-r15\n\t" \
"sts.l pr, @-r15\n\t" \
"mov.l r8, @-r15\n\t" \
"mov.l r9, @-r15\n\t" \
"mov.l r10, @-r15\n\t" \
"mov.l r11, @-r15\n\t" \
"mov.l r12, @-r15\n\t" \
"mov.l r13, @-r15\n\t" \
"mov.l r14, @-r15\n\t" \
"mov.l r15, @r1\t! save SP\n\t" \
"mov.l @r6, r15\t! change to new stack\n\t" \
"mova 1f, %0\n\t" \
"mov.l %0, @r2\t! save PC\n\t" \
"mov.l 2f, %0\n\t" \
"jmp @%0\t! call __switch_to\n\t" \
" lds r7, pr\t! with return to new PC\n\t" \
".balign 4\n" \
"2:\n\t" \
".long __switch_to\n" \
"1:\n\t" \
"mov.l @r15+, r14\n\t" \
"mov.l @r15+, r13\n\t" \
"mov.l @r15+, r12\n\t" \
"mov.l @r15+, r11\n\t" \
"mov.l @r15+, r10\n\t" \
"mov.l @r15+, r9\n\t" \
"mov.l @r15+, r8\n\t" \
"lds.l @r15+, pr\n\t" \
"ldc.l @r15+, gbr\n\t" \
: "=z" (__last) \
: "r" (__ts1), "r" (__ts2), "r" (__ts4), \
"r" (__ts5), "r" (__ts6), "r" (__ts7) \
: "r3", "t"); \
\
last = __last; \
} while (0)
#endif /* __ASM_SH_SWITCH_TO_32_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| Kbuild | File | 170 B | 0644 |
|
| adc.h | File | 211 B | 0644 |
|
| addrspace.h | File | 1.85 KB | 0644 |
|
| alignment.h | File | 654 B | 0644 |
|
| asm-offsets.h | File | 74 B | 0644 |
|
| atomic-grb.h | File | 2.97 KB | 0644 |
|
| atomic-irq.h | File | 2.01 KB | 0644 |
|
| atomic-llsc.h | File | 2.49 KB | 0644 |
|
| atomic.h | File | 693 B | 0644 |
|
| barrier.h | File | 1.47 KB | 0644 |
|
| bitops-cas.h | File | 1.73 KB | 0644 |
|
| bitops-grb.h | File | 6.21 KB | 0644 |
|
| bitops-llsc.h | File | 2.79 KB | 0644 |
|
| bitops-op32.h | File | 3.82 KB | 0644 |
|
| bitops.h | File | 1.58 KB | 0644 |
|
| bl_bit.h | File | 66 B | 0644 |
|
| bl_bit_32.h | File | 639 B | 0644 |
|
| bug.h | File | 2.77 KB | 0644 |
|
| cache.h | File | 1.31 KB | 0644 |
|
| cache_insns.h | File | 71 B | 0644 |
|
| cache_insns_32.h | File | 642 B | 0644 |
|
| cacheflush.h | File | 4.22 KB | 0644 |
|
| cachetype.h | File | 170 B | 0644 |
|
| checksum.h | File | 68 B | 0644 |
|
| checksum_32.h | File | 4.92 KB | 0644 |
|
| clock.h | File | 436 B | 0644 |
|
| cmpxchg-cas.h | File | 549 B | 0644 |
|
| cmpxchg-grb.h | File | 2.8 KB | 0644 |
|
| cmpxchg-irq.h | File | 1.04 KB | 0644 |
|
| cmpxchg-llsc.h | File | 1.06 KB | 0644 |
|
| cmpxchg-xchg.h | File | 1.24 KB | 0644 |
|
| cmpxchg.h | File | 2.09 KB | 0644 |
|
| device.h | File | 442 B | 0644 |
|
| dma-register.h | File | 1.67 KB | 0644 |
|
| dma.h | File | 3.09 KB | 0644 |
|
| dmabrg.h | File | 536 B | 0644 |
|
| dwarf.h | File | 9.66 KB | 0644 |
|
| elf.h | File | 5.87 KB | 0644 |
|
| entry-macros.S | File | 1.85 KB | 0644 |
|
| extable.h | File | 135 B | 0644 |
|
| fixmap.h | File | 2.48 KB | 0644 |
|
| flat.h | File | 865 B | 0644 |
|
| fpu.h | File | 1.67 KB | 0644 |
|
| freq.h | File | 212 B | 0644 |
|
| ftrace.h | File | 1.41 KB | 0644 |
|
| futex-cas.h | File | 728 B | 0644 |
|
| futex-irq.h | File | 482 B | 0644 |
|
| futex-llsc.h | File | 870 B | 0644 |
|
| futex.h | File | 1.35 KB | 0644 |
|
| hardirq.h | File | 267 B | 0644 |
|
| hd64461.h | File | 11.79 KB | 0644 |
|
| heartbeat.h | File | 383 B | 0644 |
|
| hugetlb.h | File | 552 B | 0644 |
|
| hw_breakpoint.h | File | 1.99 KB | 0644 |
|
| hw_irq.h | File | 915 B | 0644 |
|
| i2c-sh7760.h | File | 406 B | 0644 |
|
| io.h | File | 8.88 KB | 0644 |
|
| io_generic.h | File | 661 B | 0644 |
|
| io_noioport.h | File | 1.25 KB | 0644 |
|
| io_trapped.h | File | 1.44 KB | 0644 |
|
| irq.h | File | 1.16 KB | 0644 |
|
| irqflags.h | File | 226 B | 0644 |
|
| kdebug.h | File | 433 B | 0644 |
|
| kexec.h | File | 2.62 KB | 0644 |
|
| kgdb.h | File | 851 B | 0644 |
|
| kprobes.h | File | 1.27 KB | 0644 |
|
| linkage.h | File | 154 B | 0644 |
|
| machvec.h | File | 699 B | 0644 |
|
| mmiowb.h | File | 246 B | 0644 |
|
| mmu.h | File | 2.18 KB | 0644 |
|
| mmu_context.h | File | 4.07 KB | 0644 |
|
| mmu_context_32.h | File | 1.11 KB | 0644 |
|
| mmzone.h | File | 970 B | 0644 |
|
| module.h | File | 276 B | 0644 |
|
| page.h | File | 4.6 KB | 0644 |
|
| pci.h | File | 2.78 KB | 0644 |
|
| perf_event.h | File | 797 B | 0644 |
|
| pgalloc.h | File | 1.13 KB | 0644 |
|
| pgtable-2level.h | File | 567 B | 0644 |
|
| pgtable-3level.h | File | 1.5 KB | 0644 |
|
| pgtable.h | File | 3.89 KB | 0644 |
|
| pgtable_32.h | File | 16.53 KB | 0644 |
|
| platform_early.h | File | 1.81 KB | 0644 |
|
| posix_types.h | File | 71 B | 0644 |
|
| processor.h | File | 4.22 KB | 0644 |
|
| processor_32.h | File | 4.41 KB | 0644 |
|
| ptrace.h | File | 3.74 KB | 0644 |
|
| ptrace_32.h | File | 307 B | 0644 |
|
| push-switch.h | File | 755 B | 0644 |
|
| reboot.h | File | 472 B | 0644 |
|
| romimage-macros.h | File | 1.1 KB | 0644 |
|
| rtc.h | File | 226 B | 0644 |
|
| seccomp.h | File | 546 B | 0644 |
|
| sections.h | File | 311 B | 0644 |
|
| setup.h | File | 764 B | 0644 |
|
| sfp-machine.h | File | 2.7 KB | 0644 |
|
| sh7760fb.h | File | 5.61 KB | 0644 |
|
| sh_bios.h | File | 743 B | 0644 |
|
| shmparam.h | File | 489 B | 0644 |
|
| siu.h | File | 385 B | 0644 |
|
| smc37c93x.h | File | 5.56 KB | 0644 |
|
| smp-ops.h | File | 1.02 KB | 0644 |
|
| smp.h | File | 1.8 KB | 0644 |
|
| sparsemem.h | File | 319 B | 0644 |
|
| spi.h | File | 265 B | 0644 |
|
| spinlock-cas.h | File | 1.95 KB | 0644 |
|
| spinlock-llsc.h | File | 4.05 KB | 0644 |
|
| spinlock.h | File | 438 B | 0644 |
|
| spinlock_types.h | File | 469 B | 0644 |
|
| sram.h | File | 670 B | 0644 |
|
| stackprotector.h | File | 532 B | 0644 |
|
| stacktrace.h | File | 528 B | 0644 |
|
| string.h | File | 66 B | 0644 |
|
| string_32.h | File | 2.16 KB | 0644 |
|
| suspend.h | File | 2.52 KB | 0644 |
|
| switch_to.h | File | 190 B | 0644 |
|
| switch_to_32.h | File | 3.55 KB | 0644 |
|
| syscall.h | File | 201 B | 0644 |
|
| syscall_32.h | File | 1.59 KB | 0644 |
|
| syscalls.h | File | 532 B | 0644 |
|
| syscalls_32.h | File | 979 B | 0644 |
|
| thread_info.h | File | 4.95 KB | 0644 |
|
| timex.h | File | 637 B | 0644 |
|
| tlb.h | File | 738 B | 0644 |
|
| tlbflush.h | File | 1.77 KB | 0644 |
|
| topology.h | File | 645 B | 0644 |
|
| traps.h | File | 424 B | 0644 |
|
| traps_32.h | File | 1.42 KB | 0644 |
|
| types.h | File | 332 B | 0644 |
|
| uaccess.h | File | 4.05 KB | 0644 |
|
| uaccess_32.h | File | 4.89 KB | 0644 |
|
| uncached.h | File | 1.34 KB | 0644 |
|
| unistd.h | File | 953 B | 0644 |
|
| unwinder.h | File | 856 B | 0644 |
|
| user.h | File | 2.19 KB | 0644 |
|
| vermagic.h | File | 709 B | 0644 |
|
| vmalloc.h | File | 84 B | 0644 |
|
| vmlinux.lds.h | File | 416 B | 0644 |
|
| watchdog.h | File | 3.89 KB | 0644 |
|
| word-at-a-time.h | File | 1.34 KB | 0644 |
|