minor refactors

This commit is contained in:
Yanyan Jiang 2019-05-06 18:19:11 +00:00
parent cba9b59f9a
commit 296ee1a3d4
2 changed files with 20 additions and 21 deletions

View File

@ -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;

View File

@ -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