131d157ae1ac2cd9c787dc3c1d28e64c682803844Jia Liu//===-- ARMRelocations.h - ARM Code Relocations -----------------*- C++ -*-===// 2f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// 3f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// The LLVM Compiler Infrastructure 4f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// 5081ce940e7351e90fff829320b7dc6738a6b3815Chris Lattner// This file is distributed under the University of Illinois Open Source 6081ce940e7351e90fff829320b7dc6738a6b3815Chris Lattner// License. See LICENSE.TXT for details. 7f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// 8f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman//===----------------------------------------------------------------------===// 9f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// 10f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// This file defines the ARM target-specific relocation types. 11f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman// 12f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman//===----------------------------------------------------------------------===// 13f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 14f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman#ifndef ARMRELOCATIONS_H 15f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman#define ARMRELOCATIONS_H 16f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 17f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman#include "llvm/CodeGen/MachineRelocation.h" 18f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 19f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohmannamespace llvm { 20f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman namespace ARM { 21f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman enum RelocationType { 22f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // reloc_arm_absolute - Absolute relocation, just add the relocated value 23f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // to the value already in memory. 24f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng reloc_arm_absolute, 25f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng 26f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // reloc_arm_relative - PC relative relocation, add the relocated value to 27f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // the value already in memory, after we adjust it for where the PC is. 28a7b3e7c33f1ef7be844fde18dcd9e24afdc97748Evan Cheng reloc_arm_relative, 29f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 30f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // reloc_arm_cp_entry - PC relative relocation for constpool_entry's whose 31f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // addresses are kept locally in a map. 32f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng reloc_arm_cp_entry, 33f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng 34668d0df68e2c40e4f4073535afcc5ec210d7d200Evan Cheng // reloc_arm_vfp_cp_entry - Same as reloc_arm_cp_entry except the offset 35668d0df68e2c40e4f4073535afcc5ec210d7d200Evan Cheng // should be divided by 4. 36668d0df68e2c40e4f4073535afcc5ec210d7d200Evan Cheng reloc_arm_vfp_cp_entry, 37668d0df68e2c40e4f4073535afcc5ec210d7d200Evan Cheng 385a033a6c9c08d06f316e42b111cc79756c672733Evan Cheng // reloc_arm_machine_cp_entry - Relocation of a ARM machine constantpool 395a033a6c9c08d06f316e42b111cc79756c672733Evan Cheng // entry. 405a033a6c9c08d06f316e42b111cc79756c672733Evan Cheng reloc_arm_machine_cp_entry, 415a033a6c9c08d06f316e42b111cc79756c672733Evan Cheng 420f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng // reloc_arm_jt_base - PC relative relocation for jump tables whose 430f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng // addresses are kept locally in a map. 440f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng reloc_arm_jt_base, 450f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng 460f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng // reloc_arm_pic_jt - PIC jump table entry relocation: dest bb - jt base. 470f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng reloc_arm_pic_jt, 480f63ae111d5a509911fc61246c1acc62f8c58f18Evan Cheng 49f07a9b69d1c91187d73667b46aa423d4325ccf04Evan Cheng // reloc_arm_branch - Branch address relocation. 505d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang reloc_arm_branch, 515d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang 525d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang // reloc_arm_movt - MOVT immediate relocation. 535d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang reloc_arm_movt, 545d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang 555d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang // reloc_arm_movw - MOVW immediate relocation. 565d392dd93e023f9c14353ea84e2db717792db4bdZonr Chang reloc_arm_movw 57f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman }; 58f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman } 59f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman} 60f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 61f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman#endif 62f17a25c88b892d30c2b41ba7ecdfbdfb2b4be9cDan Gohman 63