fix sys.h

This commit is contained in:
NIIBE Yutaka
2012-05-26 13:29:59 +09:00
parent 7dd703c28b
commit cdc9d441a6
2 changed files with 17 additions and 18 deletions

View File

@@ -252,11 +252,10 @@ reset (void)
"mov.w r1, #0x1000\n\t" /* 08001000 */ "mov.w r1, #0x1000\n\t" /* 08001000 */
"movt r1, #0x0800\n\t" "movt r1, #0x0800\n\t"
"str r1, [r0, #8]\n\t" /* SCR->VCR = 0x08001000 */ "str r1, [r0, #8]\n\t" /* SCR->VCR = 0x08001000 */
"ldr r0, =_text\n\t" "ldr r0, [r1], #4\n\t"
"ldr r1, [r0], #4\n\t" "msr MSP, r0\n\t" /* Main (exception handler) stack */
"msr MSP, r1\n\t" /* Main (exception handler) stack */ "ldr r0, [r1]\n\t" /* Reset handler */
"ldr r1, [r0]\n\t" /* Reset handler */ "bx r0\n"
"bx r1\n"
: /* no output */ : /* no input */ : "memory"); : /* no output */ : /* no input */ : "memory");
} }

View File

@@ -1,10 +1,10 @@
typedef void (*handler)(void); typedef void (*handler)(void);
extern handler vector[12]; extern handler vector[14];
static inline const uint8_t * static inline const uint8_t *
unique_device_id (void) unique_device_id (void)
{ {
const uint8_t * (*func) (void) = (const uint8_t * (*)(void))vector[0]; const uint8_t * (*func) (void) = (const uint8_t * (*)(void))vector[2];
return (*func) (); return (*func) ();
} }
@@ -12,7 +12,7 @@ unique_device_id (void)
static inline void static inline void
set_led (int on) set_led (int on)
{ {
void (*func) (int) = (void (*)(int))vector[1]; void (*func) (int) = (void (*)(int))vector[3];
return (*func) (on); return (*func) (on);
} }
@@ -20,13 +20,13 @@ set_led (int on)
static inline void static inline void
flash_unlock (void) flash_unlock (void)
{ {
(*vector[2]) (); (*vector[4]) ();
} }
static inline int static inline int
flash_program_halfword (uint32_t addr, uint16_t data) flash_program_halfword (uint32_t addr, uint16_t data)
{ {
int (*func) (uint32_t, uint16_t) = (int (*)(uint32_t, uint16_t))vector[3]; int (*func) (uint32_t, uint16_t) = (int (*)(uint32_t, uint16_t))vector[5];
return (*func) (addr, data); return (*func) (addr, data);
} }
@@ -34,7 +34,7 @@ flash_program_halfword (uint32_t addr, uint16_t data)
static inline int static inline int
flash_erase_page (uint32_t addr) flash_erase_page (uint32_t addr)
{ {
int (*func) (uint32_t) = (int (*)(uint32_t))vector[4]; int (*func) (uint32_t) = (int (*)(uint32_t))vector[6];
return (*func) (addr); return (*func) (addr);
} }
@@ -42,7 +42,7 @@ flash_erase_page (uint32_t addr)
static inline int static inline int
flash_check_blank (const uint8_t *p_start, size_t size) flash_check_blank (const uint8_t *p_start, size_t size)
{ {
int (*func) (const uint8_t *, int) = (int (*)(const uint8_t *, int))vector[5]; int (*func) (const uint8_t *, int) = (int (*)(const uint8_t *, int))vector[7];
return (*func) (p_start, size); return (*func) (p_start, size);
} }
@@ -51,7 +51,7 @@ static inline int
flash_write (uint32_t dst_addr, const uint8_t *src, size_t len) flash_write (uint32_t dst_addr, const uint8_t *src, size_t len)
{ {
int (*func) (uint32_t, const uint8_t *, size_t) int (*func) (uint32_t, const uint8_t *, size_t)
= (int (*)(uint32_t, const uint8_t *, size_t))vector[6]; = (int (*)(uint32_t, const uint8_t *, size_t))vector[8];
return (*func) (dst_addr, src, len); return (*func) (dst_addr, src, len);
} }
@@ -59,7 +59,7 @@ flash_write (uint32_t dst_addr, const uint8_t *src, size_t len)
static inline int static inline int
flash_protect (void) flash_protect (void)
{ {
int (*func) (void) = (int (*)(void))vector[7]; int (*func) (void) = (int (*)(void))vector[9];
return (*func) (); return (*func) ();
} }
@@ -67,7 +67,7 @@ flash_protect (void)
static inline void __attribute__((noreturn)) static inline void __attribute__((noreturn))
flash_mass_erase_and_exec (void) flash_mass_erase_and_exec (void)
{ {
void (*func) (void) = (void (*)(void))vector[8]; void (*func) (void) = (void (*)(void))vector[10];
(*func) (); (*func) ();
for (;;); for (;;);
@@ -76,17 +76,17 @@ flash_mass_erase_and_exec (void)
static inline void static inline void
usb_lld_sys_init (void) usb_lld_sys_init (void)
{ {
(*vector[9]) (); (*vector[11]) ();
} }
static inline void static inline void
usb_lld_sys_shutdown (void) usb_lld_sys_shutdown (void)
{ {
(*vector[10]) (); (*vector[12]) ();
} }
static inline void static inline void
nvic_system_reset (void) nvic_system_reset (void)
{ {
(*vector[11]) (); (*vector[13]) ();
} }