📄 sparclite.h
字号:
/* SPARClite defs * * Copyright (c) 1995 Cygnus Support * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. *//* Macros for reading and writing to arbitrary address spaces. Note that ASI must be a constant (sorry, but the SPARC can only specify ASIs as part of an instruction. */#define read_asi(ASI, LOC) \ ({ \ unsigned int val; \ __asm__ volatile ("lda [%r1]%2,%0" : "=r" (val) : "rJ" (LOC), "I" (ASI)); \ val; \ })#define write_asi(ASI, LOC, VAL) \ __asm__ volatile ("sta %0,[%r1]%2" : : "r" (VAL), "rJ" (LOC), "I" (ASI))/* Use this when modifying registers that cause memory to be modified. This will cause GCC to reload all values after this point. */#define write_asi_volatile(ASI, LOC, VAL) \ __asm__ volatile ("sta %0,[%r1]%2" : : "r" (VAL), "rJ" (LOC), "I" (ASI) \ : "memory")/* Read the PSR (processor state register). */#define read_psr() \ ({ \ unsigned int psr; \ __asm__ ("mov %%psr, %0" : "=r" (psr)); \ psr; \ })/* Write the PSR. */#define write_psr(VAL) \ __asm__ ("mov %0, %%psr \n nop \n nop \n nop" : : "r" (VAL))/* Read the specified Ancillary State Register. */#define read_asr(REG) read_asr1(REG)#define read_asr1(REG) \ ({ \ unsigned int val; \ __asm__ ("rd %%asr" #REG ",%0" : "=r" (val)); \ val; \ })/* Write the specified Ancillary State Register. */#define write_asr(REG, VAL) write_asr1(REG, VAL)#define write_asr1(REG, VAL) \ __asm__ ("wr %0, 0, %%asr" #REG : : "r" (VAL))/* Set window size for window overflow and underflow trap handlers. Better to do this at at compile time than to calculate them at compile time each time we get a window overflow/underflow trap. */#ifdef SL933 asm ("__WINSIZE=6");#else asm ("__WINSIZE=8");#endif#define PSR_INIT 0x10c0 /* Disable traps, set s and ps */#define TBR_INIT 0#define WIM_INIT 2#define STACK_SIZE 16 * 1024
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -