/* * linux/arch/unicore32/include/asm/assembler.h * * Code specific to PKUnity SoC and UniCore ISA * * Copyright (C) 2001-2010 GUAN Xue-tao * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * * Do not include any C declarations in this file - it is included by * assembler source. */ #ifndef __ASSEMBLY__ #error "Only include this from assembly code" #endif #include <asm/ptrace.h> /* * Little Endian independent macros for shifting bytes within registers. */ #define pull >> #define push << #define get_byte_0 << #0 #define get_byte_1 >> #8 #define get_byte_2 >> #16 #define get_byte_3 >> #24 #define put_byte_0 << #0 #define put_byte_1 << #8 #define put_byte_2 << #16 #define put_byte_3 << #24 #define cadd cmpadd #define cand cmpand #define csub cmpsub #define cxor cmpxor /* * Enable and disable interrupts */ .macro disable_irq, temp mov \temp, asr andn \temp, \temp, #0xFF or \temp, \temp, #PSR_I_BIT | PRIV_MODE mov.a asr, \temp .endm .macro enable_irq, temp mov \temp, asr andn \temp, \temp, #0xFF or \temp, \temp, #PRIV_MODE mov.a asr, \temp .endm #define USER(x...) \ 9999: x; \ .pushsection __ex_table, "a"; \ .align 3; \ .long 9999b, 9001f; \ .popsection .macro notcond, cond, nexti = .+8 .ifc \cond, eq bne \nexti .else; .ifc \cond, ne beq \nexti .else; .ifc \cond, ea bub \nexti .else; .ifc \cond, ub bea \nexti .else; .ifc \cond, fs bns \nexti .else; .ifc \cond, ns bfs \nexti .else; .ifc \cond, fv bnv \nexti .else; .ifc \cond, nv bfv \nexti .else; .ifc \cond, ua beb \nexti .else; .ifc \cond, eb bua \nexti .else; .ifc \cond, eg bsl \nexti .else; .ifc \cond, sl beg \nexti .else; .ifc \cond, sg bel \nexti .else; .ifc \cond, el bsg \nexti .else; .ifnc \cond, al .error "Unknown cond in notcond macro argument" .endif; .endif; .endif; .endif; .endif; .endif; .endif .endif; .endif; .endif; .endif; .endif; .endif; .endif .endif .endm .macro usracc, instr, reg, ptr, inc, cond, rept, abort .rept \rept notcond \cond, .+8 9999 : .if \inc == 1 \instr\()b.u \reg, [\ptr], #\inc .elseif \inc == 4 \instr\()w.u \reg, [\ptr], #\inc .else .error "Unsupported inc macro argument" .endif .pushsection __ex_table, "a" .align 3 .long 9999b, \abort .popsection .endr .endm .macro strusr, reg, ptr, inc, cond = al, rept = 1, abort = 9001f usracc st, \reg, \ptr, \inc, \cond, \rept, \abort .endm .macro ldrusr, reg, ptr, inc, cond = al, rept = 1, abort = 9001f usracc ld, \reg, \ptr, \inc, \cond, \rept, \abort .endm .macro nop8 .rept 8 nop .endr .endm
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Kbuild | File | 877 B | 0644 |
|
assembler.h | File | 2.71 KB | 0644 |
|
barrier.h | File | 602 B | 0644 |
|
bitops.h | File | 1.19 KB | 0644 |
|
bug.h | File | 632 B | 0644 |
|
cache.h | File | 805 B | 0644 |
|
cacheflush.h | File | 6.46 KB | 0644 |
|
checksum.h | File | 978 B | 0644 |
|
cmpxchg.h | File | 1.43 KB | 0644 |
|
cpu-single.h | File | 1.18 KB | 0644 |
|
cputype.h | File | 787 B | 0644 |
|
delay.h | File | 1.53 KB | 0644 |
|
dma-mapping.h | File | 1.11 KB | 0644 |
|
dma.h | File | 531 B | 0644 |
|
elf.h | File | 2.58 KB | 0644 |
|
fpstate.h | File | 550 B | 0644 |
|
fpu-ucf64.h | File | 1.32 KB | 0644 |
|
gpio.h | File | 2.75 KB | 0644 |
|
hwcap.h | File | 773 B | 0644 |
|
hwdef-copro.h | File | 1.3 KB | 0644 |
|
io.h | File | 2 KB | 0644 |
|
irq.h | File | 2.56 KB | 0644 |
|
irqflags.h | File | 1.03 KB | 0644 |
|
linkage.h | File | 524 B | 0644 |
|
memblock.h | File | 1.1 KB | 0644 |
|
memory.h | File | 3 KB | 0644 |
|
mmu.h | File | 430 B | 0644 |
|
mmu_context.h | File | 2.76 KB | 0644 |
|
page.h | File | 1.89 KB | 0644 |
|
pci.h | File | 578 B | 0644 |
|
pgalloc.h | File | 2.47 KB | 0644 |
|
pgtable-hwdef.h | File | 1.3 KB | 0644 |
|
pgtable.h | File | 9.42 KB | 0644 |
|
processor.h | File | 1.98 KB | 0644 |
|
ptrace.h | File | 1.37 KB | 0644 |
|
stacktrace.h | File | 787 B | 0644 |
|
string.h | File | 994 B | 0644 |
|
suspend.h | File | 667 B | 0644 |
|
switch_to.h | File | 901 B | 0644 |
|
thread_info.h | File | 3.29 KB | 0644 |
|
timex.h | File | 767 B | 0644 |
|
tlb.h | File | 781 B | 0644 |
|
tlbflush.h | File | 5.53 KB | 0644 |
|
traps.h | File | 627 B | 0644 |
|
uaccess.h | File | 1.33 KB | 0644 |
|