forked from Mirrors/opensbi
		
	firmware: Support position independent execution
Enable OpenSBI to support position independent execution. Because the position independent code will cause an additional GOT reference when accessing the global variables, it will reduce performance a bit. Therefore, the position independent execution is disabled by default. Users can through specifying "FW_PIC=y" on the make command to enable this feature. In theory, after enabling position-independent execution, the OpenSBI can run at arbitrary address with appropriate alignment. Therefore, the original relocation mechanism will be skipped. In other words, OpenSBI will directly run at the load address without any code movement. Signed-off-by: Vincent Chen <vincent.chen@sifive.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
This commit is contained in:
		
							
								
								
									
										14
									
								
								include/sbi/riscv_elf.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								include/sbi/riscv_elf.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
#ifndef __RISCV_ELF_H__
 | 
			
		||||
#define __RISCV_ELF_H__
 | 
			
		||||
 | 
			
		||||
#include <sbi/riscv_asm.h>
 | 
			
		||||
 | 
			
		||||
#define R_RISCV_32		1
 | 
			
		||||
#define R_RISCV_64		2
 | 
			
		||||
#define R_RISCV_RELATIVE	3
 | 
			
		||||
 | 
			
		||||
#define RELOC_TYPE		__REG_SEL(R_RISCV_64, R_RISCV_32)
 | 
			
		||||
#define SYM_INDEX		__REG_SEL(0x20,	0x8)
 | 
			
		||||
#define SYM_SIZE		__REG_SEL(0x18,0x10)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
		Reference in New Issue
	
	Block a user