Merge branch 'fix-ld' of https://github.com/jiangyy/abstract-machine into fix-ld
This commit is contained in:
commit
76f99359c1
|
@ -87,7 +87,7 @@ int _map(_AddressSpace *p, void *va, void *pa, int prot) {
|
|||
(uintptr_t)pa != ROUNDDOWN(pa, PGSIZE)) {
|
||||
panic("unaligned memory address");
|
||||
}
|
||||
if (!in_range(va, uvm_area)) {
|
||||
if (!IN_RANGE(va, uvm_area)) {
|
||||
return 1; // mapping an out-of-range address
|
||||
}
|
||||
PDE *upt = (PDE*)p->ptr;
|
||||
|
|
|
@ -13,19 +13,37 @@ struct boot_info {
|
|||
int is_ap;
|
||||
void (*entry)();
|
||||
};
|
||||
|
||||
struct cpu_local {
|
||||
_AddressSpace *prot;
|
||||
SegDesc gdt[NR_SEG];
|
||||
TSS tss;
|
||||
uint8_t stack[4096];
|
||||
};
|
||||
|
||||
extern volatile uint32_t *__am_lapic;
|
||||
extern int __am_ncpu;
|
||||
extern struct cpu_local __am_cpuinfo[MAX_CPU];
|
||||
|
||||
#define CPU (&__am_cpuinfo[_cpu()])
|
||||
#define BOOTREC ((volatile struct boot_info *)0x7000)
|
||||
|
||||
#define LENGTH(arr) (sizeof(arr) / sizeof((arr)[0]))
|
||||
#define RANGE(st, ed) (_Area) { .start = (void *)st, .end = (void *)ed }
|
||||
#define IN_RANGE(ptr, area) ((area).start <= (ptr) && (ptr) < (area).end)
|
||||
#define STRINGIFY(s) #s
|
||||
#define TOSTRING(s) STRINGIFY(s)
|
||||
|
||||
#define panic(s) \
|
||||
do { \
|
||||
puts("AM Panic: "); puts(s); \
|
||||
puts(" @ " __FILE__ ":" TOSTRING(__LINE__) " \n"); \
|
||||
_halt(1); \
|
||||
} while(0)
|
||||
|
||||
static inline void puts(const char *s) {
|
||||
for (; *s; s++)
|
||||
_putc(*s);
|
||||
}
|
||||
|
||||
// apic utils
|
||||
void __am_lapic_eoi();
|
||||
|
@ -43,23 +61,4 @@ void __am_thiscpu_setstk0(uintptr_t ss0, uintptr_t esp0);
|
|||
void __am_thiscpu_halt() __attribute__((__noreturn__));
|
||||
void __am_othercpu_halt();
|
||||
|
||||
#define RANGE(st, ed) (_Area) { .start = (void *)st, .end = (void *)ed }
|
||||
static inline int in_range(void *ptr, _Area area) {
|
||||
return area.start <= ptr && ptr < area.end;
|
||||
}
|
||||
|
||||
static inline void puts(const char *s) {
|
||||
for (; *s; s++) {
|
||||
_putc(*s);
|
||||
}
|
||||
}
|
||||
#define STRINGIFY(s) #s
|
||||
#define TOSTRING(s) STRINGIFY(s)
|
||||
#define panic(s) \
|
||||
do { \
|
||||
puts("AM Panic: "); puts(s); \
|
||||
puts(" @ " __FILE__ ":" TOSTRING(__LINE__) " \n"); \
|
||||
_halt(1); \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue