~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arc/include/asm/disasm.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/arc/include/asm/disasm.h (Architecture ppc) and /arch/i386/include/asm-i386/disasm.h (Architecture i386)


  1 /* SPDX-License-Identifier: GPL-2.0-only */         1 
  2 /*                                                
  3  * several functions that help interpret ARC i    
  4  * used for unaligned accesses, kprobes and kg    
  5  *                                                
  6  * Copyright (C) 2004, 2007-2010, 2011-2012 Sy    
  7  */                                               
  8                                                   
  9 #ifndef __ARC_DISASM_H__                          
 10 #define __ARC_DISASM_H__                          
 11                                                   
 12 enum {                                            
 13         op_Bcc = 0, op_BLcc = 1, op_LD = 2, op    
 14         op_MAJOR_5 = 5, op_LD_ADD = 12, op_ADD    
 15         op_ADD_MOV_CMP = 14, op_S = 15, op_LD_    
 16         op_LDW_S = 18, op_LDWX_S = 19, op_ST_S    
 17         op_STW_S = 22, op_Su5 = 23, op_SP = 24    
 18         op_Pcl = 26, op_MOV_S = 27, op_ADD_CMP    
 19         op_B_S = 30, op_BL_S = 31                 
 20 };                                                
 21                                                   
 22 enum flow {                                       
 23         noflow,                                   
 24         direct_jump,                              
 25         direct_call,                              
 26         indirect_jump,                            
 27         indirect_call,                            
 28         invalid_instr                             
 29 };                                                
 30                                                   
 31 #define IS_BIT(word, n)         ((word) & (1<<    
 32 #define BITS(word, s, e)        (((word) >> (s    
 33                                                   
 34 #define MAJOR_OPCODE(word)      (BITS((word),     
 35 #define MINOR_OPCODE(word)      (BITS((word),     
 36 #define FIELD_A(word)           (BITS((word),     
 37 #define FIELD_B(word)           ((BITS((word),    
 38                                 (BITS((word),     
 39 #define FIELD_C(word)           (BITS((word),     
 40 #define FIELD_u6(word)          FIELDC(word)      
 41 #define FIELD_s12(word)         sign_extend(((    
 42                                         BITS((    
 43                                                   
 44 /* note that for BL/BRcc these two macro's nee    
 45  * out bit 1 (make the result a multiple of 4)    
 46 #define FIELD_s9(word)          sign_extend(((    
 47                                         BITS(w    
 48 #define FIELD_s21(word)         sign_extend(((    
 49                                         (BITS(    
 50 #define FIELD_s25(word)         sign_extend(((    
 51                                         (BITS(    
 52                                         (BITS(    
 53                                                   
 54 /* note: these operate on 16 bits! */             
 55 #define FIELD_S_A(word)         ((BITS((word),    
 56 #define FIELD_S_B(word)         ((BITS((word),    
 57                                 BITS((word), 8    
 58 #define FIELD_S_C(word)         ((BITS((word),    
 59 #define FIELD_S_H(word)         ((BITS((word),    
 60 #define FIELD_S_u5(word)        (BITS((word),     
 61 #define FIELD_S_u6(word)        (BITS((word),     
 62 #define FIELD_S_u7(word)        (BITS((word),     
 63 #define FIELD_S_u10(word)       (BITS((word),     
 64 #define FIELD_S_s7(word)        sign_extend(BI    
 65 #define FIELD_S_s8(word)        sign_extend(BI    
 66 #define FIELD_S_s9(word)        sign_extend(BI    
 67 #define FIELD_S_s10(word)       sign_extend(BI    
 68 #define FIELD_S_s11(word)       sign_extend(BI    
 69 #define FIELD_S_s13(word)       sign_extend(BI    
 70                                                   
 71 #define STATUS32_L              0x00000100        
 72 #define REG_LIMM                62                
 73                                                   
 74 struct disasm_state {                             
 75         /* generic info */                        
 76         unsigned long words[2];                   
 77         int instr_len;                            
 78         int major_opcode;                         
 79         /* info for branch/jump */                
 80         int is_branch;                            
 81         int target;                               
 82         int delay_slot;                           
 83         enum flow flow;                           
 84         /* info for load/store */                 
 85         int src1, src2, src3, dest, wb_reg;       
 86         int zz, aa, x, pref, di;                  
 87         int fault, write;                         
 88 };                                                
 89                                                   
 90 static inline int sign_extend(int value, int b    
 91 {                                                 
 92         if (IS_BIT(value, (bits - 1)))            
 93                 value |= (0xffffffff << bits);    
 94                                                   
 95         return value;                             
 96 }                                                 
 97                                                   
 98 static inline int is_short_instr(unsigned long    
 99 {                                                 
100         uint16_t word = *((uint16_t *)addr);      
101         int opcode = (word >> 11) & 0x1F;         
102         return (opcode >= 0x0B);                  
103 }                                                 
104                                                   
105 void disasm_instr(unsigned long addr, struct d    
106         int userspace, struct pt_regs *regs, s    
107 int disasm_next_pc(unsigned long pc, struct pt    
108         *cregs, unsigned long *fall_thru, unsi    
109 long get_reg(int reg, struct pt_regs *regs, st    
110 void set_reg(int reg, long val, struct pt_regs    
111                 struct callee_regs *cregs);       
112                                                   
113 #endif  /* __ARC_DISASM_H__ */                    
114                                                   

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php