/kernel/trunk/generic/include/mm/frame.h |
---|
36,9 → 36,18 |
#include <synch/spinlock.h> |
#include <mm/buddy.h> |
#include <arch/mm/page.h> |
#include <arch/mm/frame.h> |
#define ONE_FRAME 0 |
#define TWO_FRAMES 1 |
#ifdef ARCH_STACK_FRAMES |
#define STACK_FRAMES ARCH_STACK_FRAMES |
#else |
#define STACK_FRAMES ONE_FRAME |
#endif |
#define ZONES_MAX 16 /**< Maximum number of zones in system */ |
#define ZONE_JOIN 0x1 /**< If possible, merge with neighberhood zones */ |
/kernel/trunk/generic/src/proc/thread.c |
---|
116,7 → 116,7 |
# endif |
#endif |
pfn = frame_alloc_rc(ONE_FRAME, FRAME_KA | kmflags,&status); |
pfn = frame_alloc_rc(STACK_FRAMES, FRAME_KA | kmflags,&status); |
if (status) { |
#ifdef ARCH_HAS_FPU |
if (t->saved_fpu_context) |
/kernel/trunk/arch/ia64/include/mm/frame.h |
---|
29,16 → 29,12 |
#ifndef __ia64_FRAME_H__ |
#define __ia64_FRAME_H__ |
/* |
* Frame is defined to be 64K long. |
* Such a relatively big frame size is used because of kernel stack requirements |
* and organization. Portion of the stack reserved for RSE must be at least 16K |
* long. If the memory stack is to have some space allocated, the next available |
* frame size (i.e. 64K) needs to be used. |
*/ |
#define FRAME_WIDTH 16 /* 64K */ |
#define FRAME_WIDTH 14 /* 64K */ |
#define FRAME_SIZE (1<<FRAME_WIDTH) |
extern void frame_arch_init(void); |
#define ARCH_STACK_FRAMES TWO_FRAMES |
#endif |
/kernel/trunk/arch/ia64/src/proc/scheduler.c |
---|
62,8 → 62,10 |
"mov r23 = %1\n" |
"bsw.1\n" |
: |
: "r" (((__address) THREAD->kstack) + ALIGN_UP(sizeof(the_t), REGISTER_STACK_ALIGNMENT)), |
"r" (&THREAD->kstack[THREAD_STACK_SIZE - SP_DELTA])); |
: /*"r" (((__address) THREAD->kstack) + ALIGN_UP(sizeof(the_t), REGISTER_STACK_ALIGNMENT)),*/ |
"r" (&THREAD->kstack[THREAD_STACK_SIZE]), |
"r" (&THREAD->kstack[THREAD_STACK_SIZE - SP_DELTA]) |
); |
} |
void after_thread_ran_arch(void) |
/kernel/trunk/arch/ia64/src/mm/tlb.c |
---|
88,8 → 88,17 |
void tlb_invalidate_asid(asid_t asid) |
{ |
/* TODO */ |
tlb_invalidate_all(); |
} |
void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt) |
{ |
} |
/** Insert data into data translation cache. |
* |
* @param va Virtual page address. |