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