~darkmuggle-deactivatedaccount/ubuntu/quantal/grub2/fix-872244

« back to all changes in this revision

Viewing changes to grub-core/loader/efi/appleloader.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2011-05-17 23:59:10 UTC
  • mto: (17.3.55 sid)
  • mto: This revision was merged to the branch mainline in revision 122.
  • Revision ID: james.westby@ubuntu.com-20110517235910-ma8u889vyjdfro27
Tags: upstream-1.99
ImportĀ upstreamĀ versionĀ 1.99

Show diffs side-by-side

added added

removed removed

Lines of Context:
27
27
#include <grub/command.h>
28
28
#include <grub/i18n.h>
29
29
 
 
30
GRUB_MOD_LICENSE ("GPLv3+");
 
31
 
30
32
static grub_dl_t my_mod;
31
33
 
32
34
static grub_efi_handle_t image_handle;
67
69
  struct grub_efi_device_path end;
68
70
};
69
71
 
 
72
#define MAKE_PIWG_PATH(st, en)                                          \
 
73
  {                                                                     \
 
74
  .comp1 =                                                              \
 
75
    {                                                                   \
 
76
      .header = {                                                       \
 
77
        .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,                     \
 
78
        .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,          \
 
79
        .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0} \
 
80
      },                                                                \
 
81
      .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,                         \
 
82
      .start_address = st,                                              \
 
83
      .end_address = en                                                 \
 
84
    },                                                                  \
 
85
    .comp2 =                                                            \
 
86
      {                                                                 \
 
87
        .header = {                                                     \
 
88
          .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,                      \
 
89
          .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,                 \
 
90
          .length = {sizeof (struct grub_efi_piwg_device_path), 0}      \
 
91
        },                                                              \
 
92
        .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,   \
 
93
                                              0x01, 0xAE, 0xF2, 0xB7}}  \
 
94
      },                                                                \
 
95
       .end =                                                           \
 
96
          {                                                             \
 
97
            .type = GRUB_EFI_END_DEVICE_PATH_TYPE,                      \
 
98
            .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,         \
 
99
            .length = {sizeof (struct grub_efi_device_path), 0}         \
 
100
          }                                                             \
 
101
  }
 
102
 
70
103
/* early 2006 Core Duo / Core Solo models  */
71
 
static struct piwg_full_device_path devpath_1 =
72
 
{
73
 
  .comp1 =
74
 
  {
75
 
    .header = {
76
 
      .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,
77
 
      .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,
78
 
      .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0}
79
 
    },
80
 
    .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,
81
 
    .start_address = 0xffe00000,
82
 
    .end_address = 0xfff9ffff
83
 
  },
84
 
  .comp2 =
85
 
  {
86
 
    .header = {
87
 
      .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,
88
 
      .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,
89
 
      .length = {sizeof (struct grub_efi_piwg_device_path), 0}
90
 
    },
91
 
    .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,
92
 
                                          0x01, 0xAE, 0xF2, 0xB7}}
93
 
  },
94
 
  .end =
95
 
  {
96
 
    .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
97
 
    .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
98
 
    .length = {sizeof (struct grub_efi_device_path), 0}
99
 
  }
100
 
};
 
104
static struct piwg_full_device_path devpath_1 = MAKE_PIWG_PATH (0xffe00000,
 
105
                                                                0xfff9ffff);
101
106
 
102
107
/* mid-2006 Mac Pro (and probably other Core 2 models)  */
103
 
static struct piwg_full_device_path devpath_2 =
104
 
{
105
 
  .comp1 =
106
 
  {
107
 
    .header = {
108
 
      .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,
109
 
      .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,
110
 
      .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0}
111
 
    },
112
 
    .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,
113
 
    .start_address = 0xffe00000,
114
 
    .end_address = 0xfff7ffff
115
 
  },
116
 
  .comp2 =
117
 
  {
118
 
    .header = {
119
 
      .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,
120
 
      .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,
121
 
      .length = {sizeof (struct grub_efi_piwg_device_path), 0}
122
 
    },
123
 
    .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,
124
 
                                          0x01, 0xAE, 0xF2, 0xB7}}
125
 
  },
126
 
  .end =
127
 
  {
128
 
    .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
129
 
    .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
130
 
    .length = {sizeof (struct grub_efi_device_path), 0}
131
 
  }
132
 
};
 
108
static struct piwg_full_device_path devpath_2 = MAKE_PIWG_PATH (0xffe00000,
 
109
                                                                0xfff7ffff);
133
110
 
134
111
/* mid-2007 MBP ("Santa Rosa" based models)  */
135
 
static struct piwg_full_device_path devpath_3 =
136
 
{
137
 
  .comp1 =
138
 
  {
139
 
    .header = {
140
 
      .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,
141
 
      .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,
142
 
      .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0}
143
 
    },
144
 
    .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,
145
 
    .start_address = 0xffe00000,
146
 
    .end_address = 0xfff8ffff
147
 
  },
148
 
  .comp2 =
149
 
  {
150
 
    .header = {
151
 
      .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,
152
 
      .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,
153
 
      .length = {sizeof (struct grub_efi_piwg_device_path), 0}
154
 
    },
155
 
    .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,
156
 
                                          0x01, 0xAE, 0xF2, 0xB7}}
157
 
  },
158
 
  .end =
159
 
  {
160
 
    .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
161
 
    .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
162
 
    .length = {sizeof (struct grub_efi_device_path), 0}
163
 
  }
164
 
};
 
112
static struct piwg_full_device_path devpath_3 = MAKE_PIWG_PATH (0xffe00000,
 
113
                                                                0xfff8ffff);
165
114
 
166
115
/* early-2008 MBA  */
167
 
static struct piwg_full_device_path devpath_4 =
168
 
{
169
 
  .comp1 =
170
 
  {
171
 
    .header = {
172
 
      .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,
173
 
      .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,
174
 
      .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0}
175
 
    },
176
 
    .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,
177
 
    .start_address = 0xffc00000,
178
 
    .end_address = 0xfff8ffff
179
 
  },
180
 
  .comp2 =
181
 
  {
182
 
    .header = {
183
 
      .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,
184
 
      .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,
185
 
      .length = {sizeof (struct grub_efi_piwg_device_path), 0}
186
 
    },
187
 
    .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,
188
 
                                          0x01, 0xAE, 0xF2, 0xB7}}
189
 
  },
190
 
  .end =
191
 
  {
192
 
    .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
193
 
    .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
194
 
    .length = {sizeof (struct grub_efi_device_path), 0}
195
 
  }
196
 
};
 
116
static struct piwg_full_device_path devpath_4 = MAKE_PIWG_PATH (0xffc00000,
 
117
                                                                0xfff8ffff);
197
118
 
198
119
/* late-2008 MB/MBP (NVidia chipset)  */
199
 
static struct piwg_full_device_path devpath_5 =
200
 
{
201
 
  .comp1 =
202
 
  {
203
 
    .header = {
204
 
      .type = GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE,
205
 
      .subtype = GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE,
206
 
      .length = {sizeof (struct grub_efi_memory_mapped_device_path), 0}
207
 
    },
208
 
    .memory_type = GRUB_EFI_MEMORY_MAPPED_IO,
209
 
    .start_address = 0xffcb4000,
210
 
    .end_address = 0xffffbfff
211
 
  },
212
 
  .comp2 =
213
 
  {
214
 
    .header = {
215
 
      .type = GRUB_EFI_MEDIA_DEVICE_PATH_TYPE,
216
 
      .subtype = GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE,
217
 
      .length = {sizeof (struct grub_efi_piwg_device_path), 0}
218
 
    },
219
 
    .guid = {0x2B0585EB, 0xD8B8, 0x49A9, {0x8B, 0x8C, 0xE2, 0x1B,
220
 
                                          0x01, 0xAE, 0xF2, 0xB7}}
221
 
  },
222
 
  .end =
223
 
  {
224
 
    .type = GRUB_EFI_END_DEVICE_PATH_TYPE,
225
 
    .subtype = GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE,
226
 
    .length = {sizeof (struct grub_efi_device_path), 0}
227
 
  }
228
 
};
 
120
static struct piwg_full_device_path devpath_5 = MAKE_PIWG_PATH (0xffcb4000,
 
121
                                                                0xffffbfff);
 
122
 
 
123
/* mid-2010 MB/MBP (NVidia chipset)  */
 
124
static struct piwg_full_device_path devpath_6 = MAKE_PIWG_PATH (0xffcc4000,
 
125
                                                                0xffffbfff);
229
126
 
230
127
struct devdata
231
128
{
240
137
  {"MBP", (grub_efi_device_path_t *) &devpath_3},
241
138
  {"MBA", (grub_efi_device_path_t *) &devpath_4},
242
139
  {"MB NV", (grub_efi_device_path_t *) &devpath_5},
 
140
  {"MB NV2", (grub_efi_device_path_t *) &devpath_6},
243
141
  {NULL, NULL},
244
142
};
245
143