Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2859 connectés 

 


Dernière réponse
Sujet : Processeurs ARM
MC Je travaille pas vraiment sur une GBA, mais il doit y avoir des trucs interessant. Merci!

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
MC Je travaille pas vraiment sur une GBA, mais il doit y avoir des trucs interessant. Merci!
chadenat je suppose que tu connais ces adresses:
 
 
http://www.agbdev.net/
http://www.agbdev.net/gbadev/
http://www.devrs.com/
 
Il y a plein de doc tu devrais trouver ton bonheur.
MC Bon une fois n'est pas coutume je pose une question au lieu d'y répondre:
 
Y'a t-il des developpeurs assembleur ARM 7, j'ai besoin d'info sur les exceptions sur ARM (et des pointeurs sur de la doc asm ARM digne de ce nom):
 
Je fais un stub GDB (un bout de prog qui permet a GDB de fonctionner en remote), branché sur les exception aborts et undefined. Donc je dois sauver tout les regs dans un tableau et les restaurer a la sortie. L'entrée se passe bien, mais pas la sortie:
 
_undef_ex:
 /* Ajust return address to faulty instr */
 sub r14, r14, #4  
 /* Load gdb_register struct addr into R13 (saved) */
 ldr r13, =_gdb_registers
 /* Save R0 -> R12 */
 stmia r13, {r0-r12}
 /* Save old PC (R14) */
 str r14, [r13, #OFFSET_PC]
 
 /* Get and save status reg */
 mrs r0, spsr
 str r0, [r13, #OFFSET_PS]
 mov r1, r13
 
 /* Save banked regs R13 R14 (go into system mode) */
 ldr r0, =(ARM_PSR_MODE_SYSTEM32 + ARM_PSR_I_BIT + ARM_PSR_F_BIT) /* no interrupts */
 msr cpsr_c, r0  /* enter System mode, Interrupt disabled  */
 str r13, [r1, #OFFSET_SP]
 str r14, [r1, #OFFSET_LR]
 /* Return in undef mode */
 ldr r0, =(ARM_PSR_MODE_UNDEF32 + ARM_PSR_I_BIT + ARM_PSR_F_BIT) /* no interrupts */
 msr cpsr_c, r0  /* enter UNDEF mode */
 
 /* Set signal */  
 mov r0, #SIGTRAP
 
 /* Branch to gdb stub */
 bl _gdb_stub
 
 /* Restore R13 R14 */
 ldr r1, =_gdb_registers
 ldr r0, [r1, #OFFSET_PS]
 msr spsr, r0
 /* Save banked regs R13 R14 (go into system mode) */
 ldr r0, =(ARM_PSR_MODE_SYSTEM32 + ARM_PSR_I_BIT + ARM_PSR_F_BIT) /* no interrupts */
 msr cpsr_c, r0  /* enter System mode, Interrupt disabled  */
 ldr r13, [r1, #OFFSET_SP]
 ldr r14, [r1, #OFFSET_LR]
 /* Return in undef mode */
 ldr r0, =(ARM_PSR_MODE_UNDEF32 + ARM_PSR_I_BIT + ARM_PSR_F_BIT) /* no interrupts */
 msr cpsr_c, r0  /* enter UNDEF mode */
 mov r13, r1
 /* Restore other registers */
 ldmia r13, {r0-r12}  
 /* Resume execution */
 ldr r14, [r13,  #OFFSET_PC]
 movs pc, r14

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)