summaryrefslogtreecommitdiff
path: root/digital/zigbit/bitcloud/stack/Components/HAL/drivers/OFD/src/ofdIntFlashRead.s
blob: b32673770df4c7f47108874103129d6551b27f6a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/**************************************************************************//**
  \file  ofdIntFlashRead.s

  \brief Implementation of internal flash reading.

  \author
      Atmel Corporation: http://www.atmel.com \n
      Support email: avr@atmel.com

    Copyright (c) 2008-2011, Atmel Corporation. All rights reserved.
    Licensed under Atmel's Limited License Agreement (BitCloudTM).

  \internal
    History:
      13/08/09 A. Khromykh - Created
*******************************************************************************/

/*******************************************************************************
Reads byte from internal flash
Parameters:
  R25:R24:R23:R22 - Byte address into flash.
Returns:
  R24 - read byte from flash.
*******************************************************************************/
.section .text
.global ofdReadInternalFlash
ofdReadInternalFlash:
    push  r31                                    ; Store Z to stack
    push  r30                                    ; Store Z to stack
    in    r25,  0x3B                             ; Save RAMPZ.
    out	  0x3B, r24                              ; Load RAMPZ with the MSB of the address.
    movw  r30,  r22                              ; Move low bytes of address to ZH:ZL from R23:R22
    elpm  r24,  Z                                ; Extended load program memory from Z address
    out	  0x3B, r25                              ; Restore RAMPZ register.
    pop   r30                                    ; Restore Z
    pop   r31                                    ; Restore Z
    ret                                          ; return from function

; eof ofdIntFlashRead.s