LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1918|回复: 0

再请教大家一个powerpc异常向量表的问题

[复制链接]
发表于 2009-9-11 13:21:37 | 显示全部楼层 |阅读模式
再请教大家一个powerpc异常向量表的问题,我用的是E300核,开发板是mpc8313,自己写bootloader(参考uboot),首先要设置中断向量表,E300比较奇怪,没有象E500内核使用IVPR和IVORn寄存器保存中断向量。每个中断向量的入口地址是IVPR+IVORn。IVPR提供中断向量的基址,IVORn提供中断向量的偏移。在linux底下用下面这个宏:
#define SET_IVOR(vector_number, vector_label)       \                                               
        li  r26,vector_label@l;         \
        mtspr   SPRN_IVOR##vector_number,r26;   \
        sync

但是在uboot底下。

#define START_GOT           \
    .section    ".got2","aw";   \   
.LCTOC1 = .+32768

#define END_GOT             \
    .text

#define GET_GOT             \
    bl  1f      ;   \   
    .text   2       ;   \   
0:  .long   .LCTOC1-1f  ;   \   
    .text           ;   \   
1:  mflr    r14     ;   \   
    lwz r0,0b-1b(r14)   ;   \   
    add r14,r0,r14  ;

#define GOT_ENTRY(NAME)     .L_ ## NAME = . - .LCTOC1 ; .long NAME

#define GOT(NAME)       .L_ ## NAME (r14)

GOT_ENTRY(_start_of_vectors)
GOT_ENTRY(_end_of_vectors)

用got段Global Offset Table,全局向量表来保存,异常函数入口地址,我想问下,这个got全局向量表原理是什么?是怎么保存函数入口地址的?~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表