91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 38.95MB
    文件類型: .bz2
    金幣: 1
    下載: 0 次
    發布日期: 2023-08-07
  • 語言: 其他
  • 標簽:

資源簡介

linux內核版本 2.6.16的內核版本 源代碼 內核分析

資源截圖

代碼片段和文件信息

/*
?*?arch/alpha/boot/bootp.c
?*
?*?Copyright?(C)?1997?Jay?Estabrook
?*
?*?This?file?is?used?for?creating?a?bootp?file?for?the?Linux/AXP?kernel
?*
?*?based?significantly?on?the?arch/alpha/boot/main.c?of?Linus?Torvalds
?*/
#include?
#include?
#include?
#include?

#include?
#include?
#include?
#include?
#include?

#include?

#include?“ksize.h“

extern?unsigned?long?switch_to_osf_pal(unsigned?long?nr
struct?pcb_struct?*?pcb_va?struct?pcb_struct?*?pcb_pa
unsigned?long?*vptb);

extern?void?move_stack(unsigned?long?new_stack);

struct?hwrpb_struct?*hwrpb?=?INIT_HWRPB;
static?struct?pcb_struct?pcb_va[1];

/*
?*?Find?a?physical?address?of?a?virtual?object..
?*
?*?This?is?easy?using?the?virtual?page?table?address.
?*/

static?inline?void?*
find_pa(unsigned?long?*vptb?void?*ptr)
{
unsigned?long?address?=?(unsigned?long)?ptr;
unsigned?long?result;

result?=?vptb[address?>>?13];
result?>>=?32;
result?<<=?13;
result?|=?address?&?0x1fff;
return?(void?*)?result;
}

/*
?*?This?function?moves?into?OSF/1?pal-code?and?has?a?temporary
?*?PCB?for?that.?The?kernel?proper?should?replace?this?PCB?with
?*?the?real?one?as?soon?as?possible.
?*
?*?The?page?table?muckery?in?here?depends?on?the?fact?that?the?boot
?*?code?has?the?L1?page?table?identity-map?itself?in?the?second?PTE
?*?in?the?L1?page?table.?Thus?the?L1-page?is?virtually?addressable
?*?itself?(through?three?levels)?at?virtual?address?0x200802000.
?*/

#define?VPTB ((unsigned?long?*)?0x200000000)
#define?L1 ((unsigned?long?*)?0x200802000)

void
pal_init(void)
{
unsigned?long?i?rev;
struct?percpu_struct?*?percpu;
struct?pcb_struct?*?pcb_pa;

/*?Create?the?dummy?PCB.??*/
pcb_va->ksp?=?0;
pcb_va->usp?=?0;
pcb_va->ptbr?=?L1[1]?>>?32;
pcb_va->asn?=?0;
pcb_va->pcc?=?0;
pcb_va->unique?=?0;
pcb_va->flags?=?1;
pcb_va->res1?=?0;
pcb_va->res2?=?0;
pcb_pa?=?find_pa(VPTB?pcb_va);

/*
?*?a0?=?2?(OSF)
?*?a1?=?return?address?but?we?give?the?asm?the?vaddr?of?the?PCB
?*?a2?=?physical?addr?of?PCB
?*?a3?=?new?virtual?page?table?pointer
?*?a4?=?KSP?(but?the?asm?sets?it)
?*/
srm_printk(“Switching?to?OSF?PAL-code?..?“);

i?=?switch_to_osf_pal(2?pcb_va?pcb_pa?VPTB);
if?(i)?{
srm_printk(“failed?code?%ld\n“?i);
__halt();
}

percpu?=?(struct?percpu_struct?*)
(INIT_HWRPB->processor_offset?+?(unsigned?long)?INIT_HWRPB);
rev?=?percpu->pal_revision?=?percpu->palcode_avail[2];

srm_printk(“Ok?(rev?%lx)\n“?rev);

tbia();?/*?do?it?directly?in?case?we?are?SMP?*/
}

static?inline?void
load(unsigned?long?dst?unsigned?long?src?unsigned?long?count)
{
memcpy((void?*)dst?(void?*)src?count);
}

/*
?*?Start?the?kernel.
?*/
static?inline?void
runkernel(void)
{
__asm__?__volatile__(
“bis?%0%0$27\n\t“
“jmp?($27)“
:?/*?no?outputs:?it?doesn‘t?even?return?*/
:?“r“?(START_ADDR));
}

extern?char?_end;
#define?KERNEL_ORIGIN?\
((((unsigned?long)&_end)?+?51

評論

共有 條評論

相關資源