Lines 1162-1194
Link Here
|
1162 |
} |
1162 |
} |
1163 |
#endif /* ! STAGE1_5 */ |
1163 |
#endif /* ! STAGE1_5 */ |
1164 |
|
1164 |
|
|
|
1165 |
#ifdef __PIC__ |
1166 |
extern char _start[]; |
1167 |
extern char _end[]; |
1168 |
#endif |
1169 |
|
1165 |
int |
1170 |
int |
1166 |
memcheck (int addr, int len) |
1171 |
memcheck (int addr, int len) |
1167 |
{ |
1172 |
{ |
1168 |
#ifdef GRUB_UTIL |
1173 |
#ifdef GRUB_UTIL |
|
|
1174 |
#ifdef __PIC__ |
1175 |
if (_start <= addr && _end > addr + len) |
1176 |
#else |
1169 |
static int start_addr (void) |
1177 |
static int start_addr (void) |
1170 |
{ |
1178 |
{ |
1171 |
int ret; |
1179 |
int ret; |
1172 |
# if defined(HAVE_START_SYMBOL) |
1180 |
# if defined(HAVE_START_SYMBOL) |
1173 |
asm volatile ("movl $start, %0" : "=a" (ret)); |
1181 |
asm volatile ("movl $start, %0" : "=a" (ret)); |
1174 |
# elif defined(HAVE_USCORE_START_SYMBOL) |
1182 |
# elif defined(HAVE_USCORE_START_SYMBOL) |
1175 |
asm volatile ("movl $_start, %0" : "=a" (ret)); |
1183 |
asm volatile ("movl $_start, %0" : "=a" (ret)); |
1176 |
# endif |
1184 |
# endif |
1177 |
return ret; |
1185 |
return ret; |
1178 |
} |
1186 |
} |
1179 |
|
1187 |
|
1180 |
static int end_addr (void) |
1188 |
static int end_addr (void) |
1181 |
{ |
1189 |
{ |
1182 |
int ret; |
1190 |
int ret; |
1183 |
# if defined(HAVE_END_SYMBOL) |
1191 |
# if defined(HAVE_END_SYMBOL) |
1184 |
asm volatile ("movl $end, %0" : "=a" (ret)); |
1192 |
asm volatile ("movl $end, %0" : "=a" (ret)); |
1185 |
# elif defined(HAVE_USCORE_END_SYMBOL) |
1193 |
# elif defined(HAVE_USCORE_END_SYMBOL) |
1186 |
asm volatile ("movl $_end, %0" : "=a" (ret)); |
1194 |
asm volatile ("movl $_end, %0" : "=a" (ret)); |
1187 |
# endif |
1195 |
# endif |
1188 |
return ret; |
1196 |
return ret; |
1189 |
} |
1197 |
} |
1190 |
|
1198 |
|
1191 |
if (start_addr () <= addr && end_addr () > addr + len) |
1199 |
if (start_addr () <= addr && end_addr () > addr + len) |
|
|
1200 |
#endif |
1192 |
return ! errnum; |
1201 |
return ! errnum; |
1193 |
#endif /* GRUB_UTIL */ |
1202 |
#endif /* GRUB_UTIL */ |
1194 |
|
1203 |
|